icmp6.c (0700d2c3f04469d4dc4a9a659b353a7aee0e5343) | icmp6.c (34a5582c47c7ec24a6bf7de8af32b1334a79f58e) |
---|---|
1/*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 2361 unchanged lines hidden (view full) --- 2370 u_int fibnum; 2371 2372 bzero(&sdst, sizeof(sdst)); 2373 bzero(&ssrc, sizeof(ssrc)); 2374 sdst.sin6_family = ssrc.sin6_family = AF_INET6; 2375 sdst.sin6_len = ssrc.sin6_len = sizeof(struct sockaddr_in6); 2376 bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr)); 2377 bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr)); | 1/*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 2361 unchanged lines hidden (view full) --- 2370 u_int fibnum; 2371 2372 bzero(&sdst, sizeof(sdst)); 2373 bzero(&ssrc, sizeof(ssrc)); 2374 sdst.sin6_family = ssrc.sin6_family = AF_INET6; 2375 sdst.sin6_len = ssrc.sin6_len = sizeof(struct sockaddr_in6); 2376 bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr)); 2377 bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr)); |
2378 rt_flags = RTF_HOST; | 2378 rt_flags = 0; |
2379 if (is_router) { 2380 bzero(&sgw, sizeof(sgw)); 2381 sgw.sin6_family = AF_INET6; 2382 sgw.sin6_len = sizeof(struct sockaddr_in6); 2383 bcopy(&redtgt6, &sgw.sin6_addr, 2384 sizeof(struct in6_addr)); 2385 gw = (struct sockaddr *)&sgw; 2386 rt_flags |= RTF_GATEWAY; 2387 } else 2388 gw = ifp->if_addr->ifa_addr; 2389 for (fibnum = 0; fibnum < rt_numfibs; fibnum++) | 2379 if (is_router) { 2380 bzero(&sgw, sizeof(sgw)); 2381 sgw.sin6_family = AF_INET6; 2382 sgw.sin6_len = sizeof(struct sockaddr_in6); 2383 bcopy(&redtgt6, &sgw.sin6_addr, 2384 sizeof(struct in6_addr)); 2385 gw = (struct sockaddr *)&sgw; 2386 rt_flags |= RTF_GATEWAY; 2387 } else 2388 gw = ifp->if_addr->ifa_addr; 2389 for (fibnum = 0; fibnum < rt_numfibs; fibnum++) |
2390 in6_rtredirect((struct sockaddr *)&sdst, gw, 2391 (struct sockaddr *)NULL, rt_flags, 2392 (struct sockaddr *)&ssrc, fibnum); | 2390 rib_add_redirect(fibnum, (struct sockaddr *)&sdst, gw, 2391 (struct sockaddr *)&ssrc, ifp, rt_flags, 2392 V_icmp6_redirtimeout); |
2393 } 2394 /* finally update cached route in each socket via pfctlinput */ 2395 { 2396 struct sockaddr_in6 sdst; 2397 2398 bzero(&sdst, sizeof(sdst)); 2399 sdst.sin6_family = AF_INET6; 2400 sdst.sin6_len = sizeof(struct sockaddr_in6); --- 403 unchanged lines hidden --- | 2393 } 2394 /* finally update cached route in each socket via pfctlinput */ 2395 { 2396 struct sockaddr_in6 sdst; 2397 2398 bzero(&sdst, sizeof(sdst)); 2399 sdst.sin6_family = AF_INET6; 2400 sdst.sin6_len = sizeof(struct sockaddr_in6); --- 403 unchanged lines hidden --- |