bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH hurd 16/30] pfinet: make the demuxers payload-aware


From: Samuel Thibault
Subject: Re: [PATCH hurd 16/30] pfinet: make the demuxers payload-aware
Date: Tue, 2 Dec 2014 01:07:48 +0100
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

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 -+-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]