Justus Winter, le Thu 27 Nov 2014 14:18:56 +0100, a écrit : > * pfinet/ethernet.c (ethernet_demuxer): Make the demuxer payload-aware. > * pfinet/main.c (pfinet_demuxer): Likewise.
Ack. > --- > pfinet/ethernet.c | 20 +++++++++++++++++++- > pfinet/main.c | 12 ++++++++++-- > 2 files changed, 29 insertions(+), 3 deletions(-) > > diff --git a/pfinet/ethernet.c b/pfinet/ethernet.c > index 053fd1b..1678243 100644 > --- a/pfinet/ethernet.c > +++ b/pfinet/ethernet.c > @@ -116,12 +116,30 @@ ethernet_demuxer (mach_msg_header_t *inp, > int datalen; > struct ether_device *edev; > struct device *dev = 0; > + mach_port_t local_port; > > if (inp->msgh_id != NET_RCV_MSG_ID) > return 0; > > + if (MACH_MSGH_BITS_LOCAL (inp->msgh_bits) == > + MACH_MSG_TYPE_PROTECTED_PAYLOAD) > + { > + struct port_info *pi = ports_lookup_payload (NULL, > + inp->msgh_protected_payload, > + NULL); > + if (pi) > + { > + local_port = pi->port_right; > + ports_port_deref (pi); > + } > + else > + local_port = MACH_PORT_NULL; > + } > + else > + local_port = inp->msgh_local_port; > + > for (edev = ether_dev; edev; edev = edev->next) > - if (inp->msgh_local_port == edev->readptname) > + if (local_port == edev->readptname) > dev = &edev->dev; > > if (! dev) > diff --git a/pfinet/main.c b/pfinet/main.c > index 0f1fbfc..8716fdb 100644 > --- a/pfinet/main.c > +++ b/pfinet/main.c > @@ -86,8 +86,16 @@ pfinet_demuxer (mach_msg_header_t *inp, > > /* We have several classes in one bucket, which need to be demuxed > differently. */ > - pi = ports_lookup_port(pfinet_bucket, inp->msgh_local_port, > socketport_class); > - > + if (MACH_MSGH_BITS_LOCAL (inp->msgh_bits) == > + MACH_MSG_TYPE_PROTECTED_PAYLOAD) > + pi = ports_lookup_payload (pfinet_bucket, > + inp->msgh_protected_payload, > + socketport_class); > + else > + pi = ports_lookup_port (pfinet_bucket, > + inp->msgh_local_port, > + socketport_class); > + > if (pi) > { > ports_port_deref (pi); > -- > 2.1.3 > -- Samuel <D> m'enfin, le 5 juillet, le mec vient visiter le labo... * D a marque d'une croix rouge le 5 juillet sur son agenda <y> niarc niarc niarc <D> cet homme va souffrir <B> c'est donc le 5 juillet qu'il meurt d'un accident de la route écrasé par un truck muni d'un pare buffle -+- #ens-mim - repaire de terroristes -+-