• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/net/802/

Lines Matching refs:trh

43 static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev);
107 struct trh_hdr *trh;
119 trh = (struct trh_hdr *)skb_push(skb, hdr_len);
120 trllc = (struct trllc *)(trh+1);
129 trh = (struct trh_hdr *)skb_push(skb, hdr_len);
132 trh->ac=AC;
133 trh->fc=LLC_FRAME;
136 memcpy(trh->saddr,saddr,dev->addr_len);
138 memcpy(trh->saddr,dev->dev_addr,dev->addr_len);
146 memcpy(trh->daddr,daddr,dev->addr_len);
147 tr_source_route(skb, trh, dev);
161 struct trh_hdr *trh=(struct trh_hdr *)skb->data;
172 if(arp_find(trh->daddr, skb)) {
178 tr_source_route(skb,trh,dev);
192 struct trh_hdr *trh;
198 trh = tr_hdr(skb);
200 if(trh->saddr[0] & TR_RII)
201 riflen = (ntohs(trh->rcf) & TR_RCF_LEN_MASK) >> 8;
207 if(*trh->daddr & 0x80)
209 if(!memcmp(trh->daddr,dev->broadcast,TR_ALEN))
214 else if ( (trh->daddr[0] & 0x01) && (trh->daddr[1] & 0x00) && (trh->daddr[2] & 0x5E))
220 if(memcmp(trh->daddr, dev->dev_addr, TR_ALEN))
226 tr_add_rif_info(trh,dev) ;
249 void tr_source_route(struct sk_buff *skb,struct trh_hdr *trh,
265 if( (!memcmp(&(trh->daddr[0]),&(dev->broadcast[0]),TR_ALEN)) ||
266 (!memcmp(&(trh->daddr[0]),&(mcast_func_addr[0]), TR_ALEN)) )
268 trh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)
270 trh->saddr[0]|=TR_RII;
274 hash = rif_hash(trh->daddr);
278 for(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->daddr[0]),TR_ALEN);entry=entry->next);
286 printk("source routing for %pM\n", trh->daddr);
290 trh->rcf=entry->rcf;
291 memcpy(&trh->rseg[0],&entry->rseg[0],8*sizeof(unsigned short));
292 trh->rcf^=htons(TR_RCF_DIR_BIT);
293 trh->rcf&=htons(0x1fff); /* Issam Chehab <ichehab@madge1.demon.co.uk> */
295 trh->saddr[0]|=TR_RII;
313 trh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)
315 trh->saddr[0]|=TR_RII;
323 if (!(trh->saddr[0] & 0x80))
326 slack = 18 - ((ntohs(trh->rcf) & TR_RCF_LEN_MASK)>>8);
339 static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
347 saddr0 = trh->saddr[0];
353 if(trh->saddr[0] & TR_RII)
355 trh->saddr[0]&=0x7f;
356 if (((ntohs(trh->rcf) & TR_RCF_LEN_MASK) >> 8) > 2)
362 hash = rif_hash(trh->saddr);
363 for(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);entry=entry->next);
369 trh->saddr, ntohs(trh->rcf));
380 memcpy(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);
388 entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK);
389 memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));
403 if (entry->rcf != (trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK)) &&
404 !(trh->rcf & htons(TR_RCF_BROADCAST_MASK)))
408 trh->saddr, ntohs(trh->rcf));
410 entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK);
411 memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));
415 trh->saddr[0]=saddr0; /* put the routing indicator back for tcpdump */