#!/bin/sh

DEFIND_RULE_TABLE_PRIO_START=`/usr/sbin/iprule_idx.sh lb`
MAX_TABLE_COUNT=255

[ -z "$1" ] && {
	echo -e "usage:\n\t$0 table_name"
	return 1;
}

local table_name="$1"

rt_table_id=`json get policy_rt.vsdf_table_map.$table_name`
if   [ -z $rt_table_id ]; then
	rt_table_id=`json get policy_rt.vsdf_index_ptr`
	[ "$rt_table_id" -gt "$MAX_TABLE_COUNT" ] && return 1
	json set policy_rt vsdf_index_ptr=`expr $rt_table_id + 1`

	json set policy_rt.vsdf_table_map $table_name=$rt_table_id
	/usr/sbin/ip rule add prio `expr $DEFIND_RULE_TABLE_PRIO_START + $rt_table_id` fwmark $rt_table_id table $rt_table_id
	/usr/sbin/ip -6 rule add prio `expr $DEFIND_RULE_TABLE_PRIO_START + $rt_table_id` fwmark $rt_table_id table $rt_table_id
	/usr/sbin/iptables -t mangle -A CTMARK -m mark --mark $rt_table_id -j CONNMARK --set-mark $(printf 0x%07X0 $rt_table_id)/0x0FF00FF0
fi

echo $rt_table_id
return 0
