You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: setup.go
    path of file: ./repos/kuma/pkg/transparentproxy/iptables
    
    the code of the file until where you have to start completion: package iptables

import (
	"errors"

	"github.com/kumahq/kuma/pkg/transparentproxy/config"
	"github.com/kumahq/kuma/pkg/transparentproxy/iptables/builder"
)

func Setup(cfg config.Config) (string, error) {
	if cfg.DryRun {
		// TODO (bartsmykla): we should generate IPv4 and IPv6 when cfg.IPv6 is
		//  set, but currently in DryRun mode we would just display IPv6
		//  configuration when cfg.IPv6 is set
		// TODO (bartsmykla): I think dns servers should be provided as a conf
    
func Setup(cfg config.Config) (string, error) {
	if cfg.DryRun {
		// TODO (bartsmykla): we should generate IPv4 and IPv6 when cfg.IPv6 is
		//  set, but currently in DryRun mode we would just display IPv6
		//  configuration when cfg.IPv6 is set
		// TODO (bartsmykla): I think dns servers should be provided as a config
		//  value instead of explicit function parameter here
		output, err := builder.BuildIPTables(cfg, nil, cfg.IPv6)
		if err != nil {
			return "", err
		}

		_, _ = cfg.RuntimeStdout.Write([]byte(output))

		return output, nil
	}

	return builder.RestoreIPTables(cfg)
}