[CRIU] [vzlin-dev] [PATCH 2/4] netdevconf: add get_opt_index() to give index to all options
Pavel Emelyanov
xemul at parallels.com
Fri Sep 19 05:51:53 PDT 2014
On 09/10/2014 12:02 PM, Pavel Tikhomirov wrote:
> Signed-off-by: Pavel Tikhomirov <ptikhomirov at parallels.com>
> ---
> net.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 61 insertions(+)
>
> diff --git a/net.c b/net.c
> index 206736a..6d9a5f7 100644
> --- a/net.c
> +++ b/net.c
> @@ -450,6 +450,67 @@ static inline int dump_iptables(struct cr_fdset *fds)
> return run_iptables_tool("iptables-save", -1, fdset_fd(fds, CR_FD_IPTABLES));
> }
>
> +int get_opt_index(char *opt) {
Please, invert the logic.
Introduce the array of strings like this
char *devconfs[] = {
"accept_local",
"accept_redirects",
...
NULL,
}
And then dump it like
for (i = 0; devconfs[i]; i++)
img->conf[i] = sysctl_read(devconfs[i]);
And, btw, our sysctl engine is capable to work on sysctl sets,
so the above example can be slightly modified to use this facility.
> + if (strcmp(opt, "accept_local") == 0)
> + return 0;
> + if (strcmp(opt, "accept_redirects") == 0)
> + return 1;
> + if (strcmp(opt, "accept_source_route") == 0)
> + return 2;
> + if (strcmp(opt, "arp_accept") == 0)
> + return 3;
> + if (strcmp(opt, "arp_announce") == 0)
> + return 4;
> + if (strcmp(opt, "arp_filter") == 0)
> + return 5;
> + if (strcmp(opt, "arp_ignore") == 0)
> + return 6;
> + if (strcmp(opt, "arp_notify") == 0)
> + return 7;
> + if (strcmp(opt, "bootp_relay") == 0)
> + return 8;
> + if (strcmp(opt, "disable_policy") == 0)
> + return 9;
> + if (strcmp(opt, "disable_xfrm") == 0)
> + return 10;
> + if (strcmp(opt, "force_igmp_version") == 0)
> + return 11;
> + if (strcmp(opt, "forwarding") == 0)
> + return 12;
> + if (strcmp(opt, "igmpv2_unsolicited_report_interval") == 0)
> + return 13;
> + if (strcmp(opt, "igmpv3_unsolicited_report_interval") == 0)
> + return 14;
> + if (strcmp(opt, "log_martians") == 0)
> + return 15;
> + if (strcmp(opt, "mc_forwarding") == 0)
> + return 16;
> + if (strcmp(opt, "medium_id") == 0)
> + return 17;
> + if (strcmp(opt, "promote_secondaries") == 0)
> + return 18;
> + if (strcmp(opt, "proxy_arp") == 0)
> + return 19;
> + if (strcmp(opt, "proxy_arp_pvlan") == 0)
> + return 20;
> + if (strcmp(opt, "route_localnet") == 0)
> + return 21;
> + if (strcmp(opt, "rp_filter") == 0)
> + return 22;
> + if (strcmp(opt, "secure_redirects") == 0)
> + return 23;
> + if (strcmp(opt, "send_redirects") == 0)
> + return 24;
> + if (strcmp(opt, "shared_media") == 0)
> + return 25;
> + if (strcmp(opt, "src_valid_mark") == 0)
> + return 26;
> + if (strcmp(opt, "tag") == 0)
> + return 27;
> + pr_err("bad option name");
> + return -1;
> +}
> +
> static int restore_ip_dump(int type, int pid, char *cmd)
> {
> int fd, ret;
>
More information about the CRIU
mailing list