#include <stdio.h>

char *next_hop[] = { "good_next_hop", 
	"good_next_hop2", 
	"bad_next_hop_net",
	"bad_next_hop_snpa",
	"bad_next_hop_snpa2",
	"bad_next_hop_both",
	"bad_next_hop_both2",
	NULL
};

char *gw[] = { "good_gw", "bad_gw", NULL };
char *intf[] = { "good_if", "bad_if", NULL };
char *status[] = { "GOOD_STATUS", 
	"BAD_RS_STATUS",
	"BAD_EXT_INFO_STATUS",
	"BAD_HIER_REC_STATUS",
	"BAD_MULTI_EXIT_STATUS",
	NULL
};

char *multi[] = { "GOOD_MX", "GOOD_MX2", "BAD_MX", NULL };

char *cap[] = { "good_capacity", "bad_capacity", NULL };

char *hopcount[] = { "GOOD_HOPCOUNT", "BAD_HOPCOUNT", NULL };

char *qos[] = { "good_qos", "good_qos2", 
"bad_delay_qos",
"bad_error_qos",
"bad_expense_qos",
"bad_priority_qos", NULL };

char **whole_shootin_match[] = {
	status,
	multi,
	next_hop,
	gw,
	intf,
	hopcount,
	qos,
	cap, 
	NULL
};

main()
{

	int  i, j, k;
	char **arr, **first;

	printf("struct _idrpRoute_options route_opts[] = {\n");

	for (i = 0; whole_shootin_match[i]; i++)
	{
		arr = whole_shootin_match[i];
		for (j = 0; arr[j]; j++) 
		{
			printf("ROUTE_OPT(");
			for (k = 0; 
			     (first = whole_shootin_match[k])
				!= (char **) NULL; 
			     k++)
				if (i == k)
					printf("%s, ", arr[j]);
				else
					printf("%s, ", first[0]); 
			printf("),\n");
		}
	}

	printf("(struct _idrpRoute_options) NULL\n};\n\n");
};

