# The Change Logic for Data Manipulation ## Which Information is where? The gNMI-target keeps track of the configuration and operational status of the underlying operating system and "application" specific subsystems. ## Information Storage The information is stored in the data structure <code>type Server struct</code> in the field <code>config ygot.ValidatedGoStruct</code> in the file gnmiserver/server.go and keeps the most up-to-date known information. ## Source for Changes ### Via gNMI Set ### Via Operating System ### Via CLI TODO: What CLI is meant? OS or special NE CLI ## Change Logic ### Via GNMI Set (NB: Linux only at this time -- but principle sticks independent of OS) - gnmiserver/server.go in doReplaceOrUpdate calls the callback function - this triggers changes to the OS, e.g., at an networking interface - gnmiserver/server.go does **not** change s.config (which is basically an instance of <code>config ygot.ValidatedGoStruct</code>) - change of OS trigger change notification via netlink, - target receives netlink change notification - this triggers, via a go channel, the function <code>updateOrCreateInterface</code> that updates s.config, i.e., the stored configuration of the network element