taglinefilesource code
trh20net/802/tr.cstatic void tr_source_route(struct trh_hdr *trh,struct device *dev);
trh21net/802/tr.cstatic void tr_add_rif_info(struct trh_hdr *trh);
trh44net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)buff;
trh47net/802/tr.ctrh->ac=AC;
trh48net/802/tr.ctrh->fc=LLC_FRAME;
trh51net/802/tr.cmemcpy(trh->saddr,saddr,dev->addr_len);
trh53net/802/tr.cmemset(trh->saddr,0,dev->addr_len); /* Adapter fills in address */
trh62net/802/tr.cmemcpy(trh->daddr,daddr,dev->addr_len);
trh63net/802/tr.ctr_source_route(trh,dev);
trh73net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)buff;
trh81net/802/tr.cif(arp_find(trh->daddr, dest, dev, dev->pa_addr, skb)) {
trh85net/802/tr.ctr_source_route(trh,dev); 
trh92net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)skb->data;
trh95net/802/tr.cif(trh->saddr[0] & TR_RII)
trh96net/802/tr.ctr_add_rif_info(trh);
trh98net/802/tr.cif(*trh->daddr & 1) 
trh100net/802/tr.cif(!memcmp(trh->daddr,dev->broadcast,TR_ALEN))   
trh108net/802/tr.cif(memcmp(trh->daddr, dev->dev_addr, TR_ALEN))
trh117net/802/tr.cstatic void tr_source_route(struct trh_hdr *trh,struct device *dev) {
trh124net/802/tr.cif(!memcmp(&(trh->daddr[0]),&(dev->broadcast[0]),TR_ALEN)) {
trh125net/802/tr.ctrh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)  
trh127net/802/tr.ctrh->saddr[0]|=TR_RII;
trh130net/802/tr.cfor(i=0,hash=0;i<TR_ALEN;hash+=trh->daddr[i++]);
trh132net/802/tr.cfor(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->daddr[0]),TR_ALEN);entry=entry->next);
trh136net/802/tr.cprintk("source routing for %02X %02X %02X %02X %02X %02X\n",trh->daddr[0],
trh137net/802/tr.ctrh->daddr[1],trh->daddr[2],trh->daddr[3],trh->daddr[4],trh->daddr[5]);
trh140net/802/tr.ctrh->rcf=entry->rcf;
trh141net/802/tr.cmemcpy(&trh->rseg[0],&entry->rseg[0],8*sizeof(unsigned short));
trh142net/802/tr.ctrh->rcf^=htons(TR_RCF_DIR_BIT);  
trh143net/802/tr.ctrh->rcf&=htons(0x1fff);  /* Issam Chehab <ichehab@madge1.demon.co.uk> */
trh145net/802/tr.ctrh->saddr[0]|=TR_RII;
trh150net/802/tr.ctrh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)  
trh152net/802/tr.ctrh->saddr[0]|=TR_RII;
trh158net/802/tr.cstatic void tr_add_rif_info(struct trh_hdr *trh) {
trh165net/802/tr.ctrh->saddr[0]&=0x7f;
trh166net/802/tr.cfor(i=0,hash=0;i<TR_ALEN;hash+=trh->saddr[i++]);
trh171net/802/tr.cfor(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);entry=entry->next);
trh176net/802/tr.ctrh->saddr[0],trh->saddr[1],trh->saddr[2],
trh177net/802/tr.ctrh->saddr[3],trh->saddr[4],trh->saddr[5],
trh178net/802/tr.ctrh->rcf);
trh185net/802/tr.centry->rcf=trh->rcf;
trh186net/802/tr.cmemcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));
trh187net/802/tr.cmemcpy(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);
trh194net/802/tr.cif ( entry->rcf != trh->rcf ) {               
trh195net/802/tr.cif (!(trh->rcf & htons(TR_RCF_BROADCAST_MASK))) {
trh198net/802/tr.ctrh->saddr[0],trh->saddr[1],trh->saddr[2],
trh199net/802/tr.ctrh->saddr[3],trh->saddr[4],trh->saddr[5],
trh200net/802/tr.ctrh->rcf);
trh202net/802/tr.centry->rcf = trh->rcf;                  
trh203net/802/tr.cmemcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));