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 ---