process_ether_frame

        Convert a complex nested json dictionary
        to a flattened dictionary and capture
        all unique keys for table construction

        :param id: key for this msg
        :param msg: ether frame for packet

def process_ether_frame(self,
                            id=None,
                            msg=None):
        """process_ether_frame

        Convert a complex nested json dictionary
        to a flattened dictionary and capture
        all unique keys for table construction

        :param id: key for this msg
        :param msg: ether frame for packet
        """

        # normalize into a dataframe
        df = json_normalize(msg)
        # convert to a flattened dictionary
        dt = json.loads(df.to_json())

        flat_msg = {}

        for k in dt:
            new_key = "eth_{}".format(k)
            flat_msg[new_key] = dt[k]["0"]
            if new_key not in self.eth_keys:
                self.eth_keys[new_key] = k
        # end of capturing all unique keys

        dt["eth_id"] = id
        self.all_eth.append(dt)

        log.debug("ETHER data updated:")
        log.debug(self.eth_keys)
        log.debug(self.all_eth)
        log.debug("")

        return flat_msg