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);
trh45net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)skb_push(skb,dev->hard_header_len);
trh46net/802/tr.cstruct trllc *trllc=(struct trllc *)(trh+1);
trh48net/802/tr.ctrh->ac=AC;
trh49net/802/tr.ctrh->fc=LLC_FRAME;
trh52net/802/tr.cmemcpy(trh->saddr,saddr,dev->addr_len);
trh54net/802/tr.cmemset(trh->saddr,0,dev->addr_len); /* Adapter fills in address */
trh63net/802/tr.cmemcpy(trh->daddr,daddr,dev->addr_len);
trh64net/802/tr.ctr_source_route(trh,dev);
trh74net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)buff;
trh82net/802/tr.cif(arp_find(trh->daddr, dest, dev, dev->pa_addr, skb)) {
trh86net/802/tr.ctr_source_route(trh,dev); 
trh93net/802/tr.cstruct trh_hdr *trh=(struct trh_hdr *)skb->data;
trh100net/802/tr.cif(trh->saddr[0] & TR_RII)
trh101net/802/tr.ctr_add_rif_info(trh);
trh103net/802/tr.cif(*trh->daddr & 1) 
trh105net/802/tr.cif(!memcmp(trh->daddr,dev->broadcast,TR_ALEN))   
trh113net/802/tr.cif(memcmp(trh->daddr, dev->dev_addr, TR_ALEN))
trh122net/802/tr.cstatic void tr_source_route(struct trh_hdr *trh,struct device *dev) {
trh129net/802/tr.cif(!memcmp(&(trh->daddr[0]),&(dev->broadcast[0]),TR_ALEN)) {
trh130net/802/tr.ctrh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)  
trh132net/802/tr.ctrh->saddr[0]|=TR_RII;
trh135net/802/tr.cfor(i=0,hash=0;i<TR_ALEN;hash+=trh->daddr[i++]);
trh137net/802/tr.cfor(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->daddr[0]),TR_ALEN);entry=entry->next);
trh141net/802/tr.cprintk("source routing for %02X %02X %02X %02X %02X %02X\n",trh->daddr[0],
trh142net/802/tr.ctrh->daddr[1],trh->daddr[2],trh->daddr[3],trh->daddr[4],trh->daddr[5]);
trh145net/802/tr.ctrh->rcf=entry->rcf;
trh146net/802/tr.cmemcpy(&trh->rseg[0],&entry->rseg[0],8*sizeof(unsigned short));
trh147net/802/tr.ctrh->rcf^=htons(TR_RCF_DIR_BIT);  
trh148net/802/tr.ctrh->rcf&=htons(0x1fff);  /* Issam Chehab <ichehab@madge1.demon.co.uk> */
trh150net/802/tr.ctrh->saddr[0]|=TR_RII;
trh155net/802/tr.ctrh->rcf=htons((((sizeof(trh->rcf)) << 8) & TR_RCF_LEN_MASK)  
trh157net/802/tr.ctrh->saddr[0]|=TR_RII;
trh163net/802/tr.cstatic void tr_add_rif_info(struct trh_hdr *trh) {
trh170net/802/tr.ctrh->saddr[0]&=0x7f;
trh171net/802/tr.cfor(i=0,hash=0;i<TR_ALEN;hash+=trh->saddr[i++]);
trh176net/802/tr.cfor(entry=rif_table[hash];entry && memcmp(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);entry=entry->next);
trh181net/802/tr.ctrh->saddr[0],trh->saddr[1],trh->saddr[2],
trh182net/802/tr.ctrh->saddr[3],trh->saddr[4],trh->saddr[5],
trh183net/802/tr.ctrh->rcf);
trh190net/802/tr.centry->rcf=trh->rcf;
trh191net/802/tr.cmemcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));
trh192net/802/tr.cmemcpy(&(entry->addr[0]),&(trh->saddr[0]),TR_ALEN);
trh199net/802/tr.cif ( entry->rcf != trh->rcf ) {               
trh200net/802/tr.cif (!(trh->rcf & htons(TR_RCF_BROADCAST_MASK))) {
trh203net/802/tr.ctrh->saddr[0],trh->saddr[1],trh->saddr[2],
trh204net/802/tr.ctrh->saddr[3],trh->saddr[4],trh->saddr[5],
trh205net/802/tr.ctrh->rcf);
trh207net/802/tr.centry->rcf = trh->rcf;                  
trh208net/802/tr.cmemcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));