Subject: Re: IPF 4.1.6 -- NFS Client hangs
To: None <current-users@netbsd.org>
From: Christos Zoulas <christos@tac.gw.com>
List: current-users
Date: 03/06/2005 12:58:18
In article <20050306111758.GA8180@bseis.eis.cs.tu-bs.de>,
Juergen Hannken-Illjes  <hannken@eis.cs.tu-bs.de> wrote:
>
>The 28 comes from `frpr_pullup() :: plen += fin->fin_hlen;'. This function
>and the interesting values are appended.
>

I don't understand the logic here then. Plen is the minimum packet
length acceptable on function entry. In the udp case we call it
with the header length. Then we go and add the header length again?
How is that supposed to work?

christos

>
>static INLINE int frpr_pullup(fin, plen)
>fr_info_t *fin;
>int plen;
>{
>/* fin == 0xc08f4cd0 (always!), plen == 8 */
>	if (fin->fin_m != NULL) {
>		if (fin->fin_dp != NULL) {
>			plen += (char *)fin->fin_dp -
>				((char *)fin->fin_ip + fin->fin_hlen);
>/* plen == 8 */
>		}
>		plen += fin->fin_hlen;
>/* plen == 28 */
>		if (M_LEN(fin->fin_m) < plen) {
>/* M_LEN(fin->fin_m) == 24, plen == 28 */
>			if (fr_pullup(fin->fin_m, fin, plen) == NULL) {
>/* fail */
>				return -1;
>			}
>		}
>	}
>	return 0;
>}
>