On Mon, Jul 27, 2009 at 07:01:58PM -0700, Darren Reed wrote:
> http://cr.opensolaris.org/~darrenr/onnv-pcapture/
>
Hi darren,
Here are my comments for the mac and sockmod_pfp components:
dls_link.c:
930:
dls_link_getzid() seems to be unused.
mac_client.c:
3253-3254:
I think you can't assume that the mp_copy is still valid after
invoking mpip->mpi_fn(). mp_copy could already be freed.
to fix this, you'll probably need to move the mpi_no_copy logic
to mac_promisc_dispatch() and mac_promisc_client_dispatch(). the
b_next should be saved before calling mac_promisc_dispatch_one().
also, if mpi_no_copy is set, the mp_chain has to be freed
right after mac_promisc_dispatch()/mac_promisc_client_dispatch()
because you can't let the same mp_chain come up two different paths.
bpf.c:
1710-1720:
if I read this correctly, this is passing the mac name to
mac_client_open() which will result in the mac name being copied
to bif_ifname. I think you want the real link name right?
to get the real link name, the name arg to mac_client_open()
should be NULL and flags should include
MAC_OPEN_FLAGS_USE_DATALINK_NAME.
also, in several places in this file you have something like:
if (bpf_debug)
cmn_err(CE_WARN, "...");
it may be better to put this into a macro.
bpf_mac.c:
102:
do you need to return the correct size for non-ether macs?
the bpr_hdr_length entry point also seems to be unused.
sockmod_pfp.c:
1211:
you should consider adding a pfp_close() function symmetrical
to pfp_open_index() for closing mh/mch.
1223:
similar problem as bpf.c.
you should pass a NULL name and MAC_OPEN_FLAGS_USE_DATALINK_NAME
flag to mac_client_open(), then use mac_client_name() to get
the link name and pass it to zone_access_datalink().
716,719:
if you did the pfp_open_index() at 660, these conditions must
be true. you could set a boolean at 660 and use it instead
of checking mh/mch. something like:
if (new_open) {
ASSERT(mch != ps->ps_mch);
ASSERT(mh != ps->ps_mh);
pfp_close(mch, mh);
}
722:
mp could be uninitialized if you jumped from 674 and this would
free invalid memory.
330:
you need to specify MAC_PROMISC_FLAGS_VLAN_TAG_STRIP in
mac_promisc_add() otherwise the mhi_bindsap here will be
incorrect for vlan packets.
356:
shouldn't you use msgdsize() instead of MBLKL?
408:
mhi_saddr could possibly be NULL (for IB links)
976:
why doesn't this function use dls_mgmt_get_linkid()?
955,982:
should this be copyin() instead of bcopy()?
1150:
if possible, try to limit bf_len/bf_insns to some reasonable
number so you don't allocate too much kernel memory.
1180:
need to return an error if bpf_validate() fails.
1160:
maybe pfp_release_bpf() should be done after bpf_validate().
eric
_______________________________________________
networking-discuss mailing list
[email protected]