Commit e04e0385 authored by Robert David Graham's avatar Robert David Graham
Browse files

vlan

parent c7856615
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1170,6 +1170,8 @@ main_scan(struct Masscan *masscan)
        if (masscan->nmap.ttl)
        if (masscan->nmap.ttl)
            template_set_ttl(parms->tmplset, masscan->nmap.ttl);
            template_set_ttl(parms->tmplset, masscan->nmap.ttl);


        if (masscan->nic[0].is_vlan)
            template_set_vlan(parms->tmplset, masscan->nic[0].vlan_id);




        /*
        /*
+30 −0
Original line number Original line Diff line number Diff line
@@ -1051,6 +1051,36 @@ template_set_ttl(struct TemplateSet *tmplset, unsigned ttl)
    }
    }
}
}


void
template_set_vlan(struct TemplateSet *tmplset, unsigned vlan)
{
    unsigned i;
    
    for (i=0; i<tmplset->count; i++) {
        struct TemplatePacket *tmpl = &tmplset->pkts[i];
        unsigned char *px;

        if (tmpl->length < 14)
            continue;
        
        px = (unsigned char*)malloc(tmpl->length + 4);
        memcpy(px, tmpl->packet, 12);
        memcpy(px+16, tmpl->packet+12, tmpl->length - 12);
        
        px[12] = 0x81;
        px[13] = 0x00;
        px[14] = (unsigned char)(vlan>>8);
        px[15] = (unsigned char)(vlan>>0);
        
        tmpl->packet = px;
        tmpl->length += 4;
        
        tmpl->offset_ip += 4;
        tmpl->offset_tcp += 4;
        tmpl->offset_app += 4;
    }
}





/***************************************************************************
/***************************************************************************
+1 −0
Original line number Original line Diff line number Diff line
@@ -166,5 +166,6 @@ unsigned template_get_source_ip(struct TemplateSet *tmplset);


void template_set_source_port(struct TemplateSet *tmplset, unsigned port);
void template_set_source_port(struct TemplateSet *tmplset, unsigned port);
void template_set_ttl(struct TemplateSet *tmplset, unsigned ttl);
void template_set_ttl(struct TemplateSet *tmplset, unsigned ttl);
void template_set_vlan(struct TemplateSet *tmplset, unsigned vlan);


#endif
#endif