mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 01:30:30 -04:00
ng_ipfw: allow use of 32 bits wide cookies
There is no reason in truncating 32 bits cookie value to 16 bits.
Reviewed by: glebius
(cherry picked from commit 20e1f207cc)
This commit is contained in:
parent
746b0f70a2
commit
dadf64c558
1 changed files with 9 additions and 9 deletions
|
|
@ -69,7 +69,7 @@ static ng_findhook_t ng_ipfw_findhook;
|
|||
static ng_rcvdata_t ng_ipfw_rcvdata;
|
||||
static ng_disconnect_t ng_ipfw_disconnect;
|
||||
|
||||
static hook_p ng_ipfw_findhook1(node_p, u_int16_t );
|
||||
static hook_p ng_ipfw_findhook1(node_p, uint32_t );
|
||||
static int ng_ipfw_input(struct mbuf **, struct ip_fw_args *, bool);
|
||||
|
||||
/* We have only one node */
|
||||
|
|
@ -94,7 +94,7 @@ MODULE_DEPEND(ng_ipfw, ipfw, 3, 3, 3);
|
|||
/* Information we store for each hook */
|
||||
struct ng_ipfw_hook_priv {
|
||||
hook_p hook;
|
||||
u_int16_t rulenum;
|
||||
uint32_t cookie;
|
||||
};
|
||||
typedef struct ng_ipfw_hook_priv *hpriv_p;
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ static int
|
|||
ng_ipfw_newhook(node_p node, hook_p hook, const char *name)
|
||||
{
|
||||
hpriv_p hpriv;
|
||||
u_int16_t rulenum;
|
||||
uint32_t cookie;
|
||||
const char *cp;
|
||||
char *endptr;
|
||||
|
||||
|
|
@ -166,7 +166,7 @@ ng_ipfw_newhook(node_p node, hook_p hook, const char *name)
|
|||
return (EINVAL);
|
||||
|
||||
/* Convert it to integer */
|
||||
rulenum = (u_int16_t)strtol(name, &endptr, 10);
|
||||
cookie = (uint32_t)strtoul(name, &endptr, 10);
|
||||
if (*endptr != '\0')
|
||||
return (EINVAL);
|
||||
|
||||
|
|
@ -176,7 +176,7 @@ ng_ipfw_newhook(node_p node, hook_p hook, const char *name)
|
|||
return (ENOMEM);
|
||||
|
||||
hpriv->hook = hook;
|
||||
hpriv->rulenum = rulenum;
|
||||
hpriv->cookie = cookie;
|
||||
|
||||
NG_HOOK_SET_PRIVATE(hook, hpriv);
|
||||
|
||||
|
|
@ -198,10 +198,10 @@ ng_ipfw_connect(hook_p hook)
|
|||
static hook_p
|
||||
ng_ipfw_findhook(node_p node, const char *name)
|
||||
{
|
||||
u_int16_t n; /* numeric representation of hook */
|
||||
uint32_t n; /* numeric representation of hook */
|
||||
char *endptr;
|
||||
|
||||
n = (u_int16_t)strtol(name, &endptr, 10);
|
||||
n = (uint32_t)strtoul(name, &endptr, 10);
|
||||
if (*endptr != '\0')
|
||||
return NULL;
|
||||
return ng_ipfw_findhook1(node, n);
|
||||
|
|
@ -209,14 +209,14 @@ ng_ipfw_findhook(node_p node, const char *name)
|
|||
|
||||
/* Look up hook by rule number */
|
||||
static hook_p
|
||||
ng_ipfw_findhook1(node_p node, u_int16_t rulenum)
|
||||
ng_ipfw_findhook1(node_p node, uint32_t cookie)
|
||||
{
|
||||
hook_p hook;
|
||||
hpriv_p hpriv;
|
||||
|
||||
LIST_FOREACH(hook, &node->nd_hooks, hk_hooks) {
|
||||
hpriv = NG_HOOK_PRIVATE(hook);
|
||||
if (NG_HOOK_IS_VALID(hook) && (hpriv->rulenum == rulenum))
|
||||
if (NG_HOOK_IS_VALID(hook) && (hpriv->cookie == cookie))
|
||||
return (hook);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue