ÏêϸÉè¼ÆËµÃ÷ÊéʾÀý ÏÂÔØ±¾ÎÄ

3.2.4.3.5 int deltdb(struct tdb *tdbp) Ä¿µÄ£º ɾ³ýij¸öÖ¸¶¨µÄtdb¿é¡£ ²ÎÊý£º

tdbp ¨D¨D Ҫɾ³ýµÄtdb¿é

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£º

ÅжÏtdbpµÄÓÐЧÐÔ£¬ÈôÎÞЧ£¬Ôò·µ»ØÊ§°ÜÐÅÏ¢£» ¼ÆËãhashvalÖµ£»

¸ù¾ÝhashvalÕÒµ½tdbp£¬²¢É¾³ýËü£¬Èôʧ°Ü£¬·µ»Ø´íÎó¡£ 3.2.4.3.6 int deltdbchain(struct tdb *tdbp) Ä¿µÄ£º ɾ³ýÕû¸ötdbpÁ´¡£ ²ÎÊý£º

tdbp ¨D¨D Ҫɾ³ýµÄtdbÁ´

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£º

ÅжÏtdbpÊÇ·ñÓÐЧ£¬ÈôÎÞЧ£¬·µ»Ø´íÎóÐÅÏ¢£» ½«tdbpÒÆÖÁ×îºóµÄtdbp->tdb_onext£» ɾ³ýËùÓеÄtdb¿é¡£

3.2.4.3.7 int ipsec_tdbwipe(struct tdb *tdbp) Ä¿µÄ£º ½«Ö¸¶¨tdb¿éÖеÄËùÓÐÖµÇå¿Õ¡£ ²ÎÊý£º

tdbp ¨D¨D ÒªÇå¿ÕµÄtdb¿é

·µ»ØÖµ£º 0 ¨D¨D³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£º ½«ËùÓÐÖµÖÃΪNULL¡£

3.2.5°²È«²ßÂÔÊý¾Ý¿âµÄ¹ÜÀíÄ£¿é

3.2.5.1¸ÅҪ˵Ã÷ 3.2.5.1.1¹¦ÄÜ

ʵÏÖÁ˶ÔSPDÊý¾Ý¿âµÄ³õʼ»¯£¬Ìí¼Ó¡¢É¾³ýeroute¡£ 3.2.5.1.2×é³ÉÎļþ

radij.c, ipsec_radij.c

3.2.5.2±äÁ¿ËµÃ÷ 3.2.5.2.1 eroute struct eroute {

struct rjtentry er_rjt; struct sa_id er_said;

struct sockaddr_encap er_eaddr; struct sockaddr_encap er_emask; };

3.2.5.3º¯Êý˵Ã÷

3.2.5.3.1 int ipsec_radijinit(void) Ä¿µÄ£º ³õʼ»¯radijÊ÷ ²ÎÊý£º

ÎÞ

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£ºµ÷ÓÃrj_init()º¯Êý³õʼ»¯¡£ 3.2.5.3.2 int

ipsec_makeroute(struct

sockaddr_encap

*eaddr,

struct

sockaddr_encap *emask, struct sa_id said) Ä¿µÄ£º ¸ù¾ÝsaidÖµ£¬Éú³ÉеÄerouteÏî¡£ ²ÎÊý£º

eaddr ¨D¨D ·â×°µÄÓÐЧĿµÄµØÖ·£¬ emask ¨D¨D ·â×°µÄÄ¿µÄµØÖ·ÑÚÂ룬 said ¨D¨D ´«ÈëµÄsaidÖµ

·µ»ØÖµ£º 0 ¨D¨D³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£º

·ÖÅäeroute¿Õ¼ä¨D¨Dretrt£¬²¢ÏÈÇå0£»

¸øretrt¸³Öµ£ºretrt->er_eaddr = *eaddr; retrt->er_emask = *emask; retrt->er_said = said;

¸øeroute±í¼ÓËø£»

µ÷Óú¯Êýrj_addroute(&(retrt->er_eaddr), &(retrt->er_emask), rnh,

retrt->er_rjt.rd_nodes)£¬Ïòeroute±íÖмÓÈëÐÂÉú³ÉµÄ¸ÃÏ

½âËø£¬·µ»Ø¡£

3.2.5.3.3 int ipsec_breakroute(struct sockaddr_encap *eaddr, struct

sockaddr_encap *emask) Ä¿µÄ£º ɾ³ýÖ¸¶¨µÄroute¡£ ²ÎÊý£º

eaddr ¨D¨D ÓÐЧĿµÄµØÖ·£¬emask £­ Ä¿µÄµØÖ·µÄÑÚÂë

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü Ëã·¨ÃèÊö£º

Ëø×¡eroute±í£»

µ÷Óú¯Êýrj_delete(eaddr, emask, rnh, &rn)ɾ³ýÕâ¸öÖ¸¶¨route£» ½âËø£¬½«¸ÃrouteÏîÇå0£¬µ÷ÓÃϵͳµ÷ÓÃkfreeÊͷŸÿռ䡣

3.2.5.3.4 struct eroute *ipsec_findroute(struct sockaddr_encap *eaddr) Ä¿µÄ£º ½ÓÊÕ²¢´¦ÀíipsecÊý¾Ý°ü¡£ ²ÎÊý£º

eaddr ¨D¨D Òª²éÕÒµÄrouteËù¾ßÓеÄeaddrÖµ

·µ»ØÖµ£º struct eroute ¨D¨D ÕÒµ½µÄerouteÖµ£¬NULL ¨D¨D δÕÒµ½ Ëã·¨ÃèÊö£º

µ÷Óú¯Êýrj_match((caddr_t)eaddr, rnh)£¬¸ù¾Ýeaddr²éÕÒÏàÓ¦µÄerouteÏ

·µ»ØÕÒµ½µÄerouteÏî¡£

3.2.5.3.5 int ipsec_cleareroutes(void) Ä¿µÄ£º Çå¿Õeroute±í¡£ ²ÎÊý£º

ÎÞ

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü

Ëã·¨ÃèÊö£ºÊ×ÏÈ£¬Ëø×¡eroute±í£»µ÷Óú¯Êýradijcleartree()º¯Êý£»½âËø£¬·µ»Ø¡£ 3.2.5.3.6 int ipsec_radijcleanup(void) Ä¿µÄ£º ²ÎÊý£º

ÎÞ

·µ»ØÖµ£º 0 ¨D¨D ³É¹¦£¬·Ç0Öµ¨D¨D ʧ°Ü

Ëã·¨ÃèÊö£ºÊ×ÏÈ£¬Ëø×¡eroute±í£»µ÷Óú¯Êýradijcleanup()º¯Êý£»½âËø£¬·µ»Ø¡£

3.3ÃÜԿЭÉ̼°¹ÜÀíÄ£¿é

3.3.1 ¸ÅҪ˵Ã÷

3.3.1.1 ¹¦ÄÜ

Ç°ÃæËùÃèÊöµÄKLIPSÄ£¿é£¬»ù±¾Íê³ÉÁ˶ÔÊäÈë¡¢Êä³öÊý¾Ý°üµÄ¼ÓÃÜ¡¢ÈÏÖ¤¹¤×÷£¬µ«ÆäǰÌáÊÇ´¦ÀíÊý¾Ý°üµÄSAÒѾ­Ð­ÉÌÍê±Ï£¬¶øÕâ¸öSAµÄЭÉ̹¤×÷ÕýÊÇÓÉIKEËù¸ºÔðµÄ¡£ÔÚ±¾³ÌÐòÖУ¬PlutoÄ£¿éÊÇIKEµÄÒ»¸öʵÏÖ£¬Ëü¿ÉÒÔ×Ô¶¯Íê³ÉÁ½¸öÖ÷»ú»òÍø¹Ø¼äµÄ°²È«ÁªÃ˵ÄЭÉ̹¤×÷¡£