diff options
| author | Olivier Dugeon <olivier.dugeon@orange.com> | 2019-07-26 16:07:39 +0200 | 
|---|---|---|
| committer | Olivier Dugeon <olivier.dugeon@orange.com> | 2019-09-17 17:35:50 +0200 | 
| commit | 1b3f47d04cd48eea3de2d859da8541896519dfa4 (patch) | |
| tree | 5b5e8256a2ebf59c1e8d2cf392ef1328d58144ac /isisd/isis_mt.c | |
| parent | 215e03fe5328404e543760fecbbbf096a612bebc (diff) | |
isisd: Update TLVs processing for TE, RI & SR
In preparation to Segment Routing:
 - Update the management of Traffic Engineering subTLVs to the new tlvs parser
 - Add Router Capability TLV 242 as per RFC 4971 & 7981
 - Add Segment Routing subTLVs as per draft-isis-segment-routing-extension-25
Modified files:
 - isis_tlvs.h: add new structure to manage TE subTLVs, TLV 242 & SR subTLVs
 - isis_tlvs.c: add new functions (pack, copy, free, unpack & print) to process
   TE subTLVs, Router Capability TLV and SR subTLVs
 - isis_circuit.[c,h] & isis_lsp.[c,h]: update to new subTLVs & TLV processing
 - isis_te.[c,h]: remove all old TE structures and managment functions,
   and add hook call to set local and remote IP addresses as wellas update TE
   parameters
 - isis_zebra.[c,h]: add hook call when new interface is up
 - isis_mt.[c,h], isis_pdu.c & isis_northbound.c: adjust to new TE subTLVs
 - tests/isisd/test_fuzz_isis_tlv_tests.h.gz: adapte fuuz tests to new parser
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Diffstat (limited to 'isisd/isis_mt.c')
| -rw-r--r-- | isisd/isis_mt.c | 17 | 
1 files changed, 7 insertions, 10 deletions
diff --git a/isisd/isis_mt.c b/isisd/isis_mt.c index f7d4c7170f..36413bac59 100644 --- a/isisd/isis_mt.c +++ b/isisd/isis_mt.c @@ -511,8 +511,8 @@ static uint16_t *circuit_bcast_mt_set(struct isis_circuit *circuit, int level,  static void tlvs_add_mt_set(struct isis_area *area, struct isis_tlvs *tlvs,  			    unsigned int mt_count, uint16_t *mt_set, -			    uint8_t *id, uint32_t metric, uint8_t *subtlvs, -			    uint8_t subtlv_len) +			    uint8_t *id, uint32_t metric, +			    struct isis_ext_subtlvs *ext)  {  	for (unsigned int i = 0; i < mt_count; i++) {  		uint16_t mtid = mt_set[i]; @@ -527,30 +527,27 @@ static void tlvs_add_mt_set(struct isis_area *area, struct isis_tlvs *tlvs,  				area->area_tag, sysid_print(id),  				LSP_PSEUDO_ID(id), isis_mtid2str(mtid));  		} -		isis_tlvs_add_extended_reach(tlvs, mtid, id, metric, subtlvs, -					     subtlv_len); +		isis_tlvs_add_extended_reach(tlvs, mtid, id, metric, ext);  	}  }  void tlvs_add_mt_bcast(struct isis_tlvs *tlvs, struct isis_circuit *circuit, -		       int level, uint8_t *id, uint32_t metric, -		       uint8_t *subtlvs, uint8_t subtlv_len) +		       int level, uint8_t *id, uint32_t metric)  {  	unsigned int mt_count;  	uint16_t *mt_set = circuit_bcast_mt_set(circuit, level, &mt_count);  	tlvs_add_mt_set(circuit->area, tlvs, mt_count, mt_set, id, metric, -			subtlvs, subtlv_len); +			circuit->ext);  }  void tlvs_add_mt_p2p(struct isis_tlvs *tlvs, struct isis_circuit *circuit, -		     uint8_t *id, uint32_t metric, uint8_t *subtlvs, -		     uint8_t subtlv_len) +		     uint8_t *id, uint32_t metric)  {  	struct isis_adjacency *adj = circuit->u.p2p.neighbor;  	tlvs_add_mt_set(circuit->area, tlvs, adj->mt_count, adj->mt_set, id, -			metric, subtlvs, subtlv_len); +			metric, circuit->ext);  }  void mt_init(void)  | 
