]>
git.proxmox.com Git - mirror_frr.git/blob - nhrpd/reqid.c
5 static unsigned int nhrp_reqid_key(void *data
)
7 struct nhrp_reqid
*r
= data
;
11 static int nhrp_reqid_cmp(const void *data
, const void *key
)
13 const struct nhrp_reqid
*a
= data
, *b
= key
;
14 return a
->request_id
== b
->request_id
;
17 uint32_t nhrp_reqid_alloc(struct nhrp_reqid_pool
*p
, struct nhrp_reqid
*r
,
18 void (*cb
)(struct nhrp_reqid
*, void *))
21 p
->reqid_hash
= hash_create(nhrp_reqid_key
, nhrp_reqid_cmp
,
23 p
->next_request_id
= 1;
27 r
->request_id
= p
->next_request_id
;
28 if (++p
->next_request_id
== 0)
29 p
->next_request_id
= 1;
31 hash_get(p
->reqid_hash
, r
, hash_alloc_intern
);
36 void nhrp_reqid_free(struct nhrp_reqid_pool
*p
, struct nhrp_reqid
*r
)
39 hash_release(p
->reqid_hash
, r
);
44 struct nhrp_reqid
*nhrp_reqid_lookup(struct nhrp_reqid_pool
*p
, uint32_t reqid
)
46 struct nhrp_reqid key
;
49 key
.request_id
= reqid
;
50 return hash_lookup(p
->reqid_hash
, &key
);