add inpcb accessor functions for fields needed by TOE devices

This commit is contained in:
Kip Macy 2008-07-21 00:08:34 +00:00
parent 44554a6de7
commit 9378e4377f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=180640
2 changed files with 62 additions and 0 deletions

View File

@ -1254,6 +1254,60 @@ inp_unlock_assert(struct inpcb *inp)
}
#endif
void
inp_apply_all(void (*func)(struct inpcb *, void *), void *arg)
{
struct inpcb *inp;
INP_INFO_RLOCK(&tcbinfo);
LIST_FOREACH(inp, tcbinfo.ipi_listhead, inp_list) {
INP_WLOCK(inp);
func(inp, arg);
INP_WUNLOCK(inp);
}
INP_INFO_RUNLOCK(&tcbinfo);
}
struct socket *
inp_inpcbtosocket(struct inpcb *inp)
{
INP_WLOCK_ASSERT(inp);
return (inp->inp_socket);
}
struct tcpcb *
inp_inpcbtotcpcb(struct inpcb *inp)
{
INP_WLOCK_ASSERT(inp);
return ((struct tcpcb *)inp->inp_ppcb);
}
int
inp_ip_tos_get(const struct inpcb *inp)
{
return (inp->inp_ip_tos);
}
void
inp_ip_tos_set(struct inpcb *inp, int val)
{
inp->inp_ip_tos = val;
}
void
inp_4tuple_get(const struct inpcb *inp, uint32_t *laddr, uint16_t *lp, uint32_t *faddr, uint16_t *fp)
{
memcpy(laddr, &inp->inp_laddr, 4);
memcpy(faddr, &inp->inp_faddr, 4);
*lp = inp->inp_lport;
*fp = inp->inp_fport;
}
#ifdef DDB
static void
db_print_indent(int indent)

View File

@ -350,6 +350,14 @@ inp_unlock_assert(struct inpcb *inp __unused)
}
#endif
void inp_apply_all(void (*func)(struct inpcb *, void *), void *arg);
int inp_ip_tos_get(const struct inpcb *inp);
void inp_ip_tos_set(struct inpcb *inp, int val);
struct socket *inp_inpcbtosocket(struct inpcb *inp);
struct tcpcb *inp_inpcbtotcpcb(struct inpcb *inp);
void inp_4tuple_get(const struct inpcb *inp, uint32_t *laddr, uint16_t *lp, uint32_t *faddr, uint16_t *fp);
#endif /* _KERNEL */