Lines Matching refs:rcip

239 static boolean_t	args_to_rtcmd(rtcmd_irep_t *rcip, char **argv,
246 static void del_rtcmd_irep(rtcmd_irep_t *rcip);
248 static boolean_t getaddr(rtcmd_irep_t *rcip, int which, char *s,
254 rtcmd_irep_t *rcip);
258 static void inet_makenetandmask(rtcmd_irep_t *rcip, in_addr_t net,
272 static void print_rtcmd_short(FILE *to, rtcmd_irep_t *rcip,
278 static int rtmsg(rtcmd_irep_t *rcip);
284 static void set_metric(rtcmd_irep_t *rcip, char *value, int key,
1024 rtcmd_irep_t *rcip; in new_rtcmd_irep() local
1026 rcip = calloc(1, sizeof (rtcmd_irep_t)); in new_rtcmd_irep()
1027 if (rcip == NULL) { in new_rtcmd_irep()
1030 rcip->ri_af = af; in new_rtcmd_irep()
1031 rcip->ri_flags = RTF_STATIC; in new_rtcmd_irep()
1032 return (rcip); in new_rtcmd_irep()
1036 del_rtcmd_irep(rtcmd_irep_t *rcip) in del_rtcmd_irep() argument
1038 free(rcip->ri_dest_str); in del_rtcmd_irep()
1039 free(rcip->ri_gate_str); in del_rtcmd_irep()
1040 free(rcip->ri_ifp_str); in del_rtcmd_irep()
1046 if (rcip->ri_gate_hp != NULL && in del_rtcmd_irep()
1047 rcip->ri_gate_hp->h_addrtype == AF_INET6) in del_rtcmd_irep()
1048 freehostent(rcip->ri_gate_hp); in del_rtcmd_irep()
1049 free(rcip); in del_rtcmd_irep()
1069 print_rtcmd_short(FILE *to, rtcmd_irep_t *rcip, boolean_t gw_good, in print_rtcmd_short() argument
1075 switch (rcip->ri_cmd) { in print_rtcmd_short()
1094 (rcip->ri_flags & RTF_HOST) ? "host" : "net", in print_rtcmd_short()
1095 (rcip->ri_dest_str == NULL) ? "NULL" : rcip->ri_dest_str); in print_rtcmd_short()
1097 if (rcip->ri_gate_str != NULL) { in print_rtcmd_short()
1098 switch (rcip->ri_af) { in print_rtcmd_short()
1102 inet_ntoa(rcip->ri_gate.sin.sin_addr)); in print_rtcmd_short()
1104 rcip->ri_gate_hp != NULL && in print_rtcmd_short()
1105 rcip->ri_gate_hp->h_addr_list[1] != NULL) { in print_rtcmd_short()
1113 rcip->ri_gate_str, in print_rtcmd_short()
1114 inet_ntoa(rcip->ri_gate.sin.sin_addr)); in print_rtcmd_short()
1117 rcip->ri_gate_str); in print_rtcmd_short()
1122 &rcip->ri_gate.sin6.sin6_addr, obuf, in print_rtcmd_short()
1130 rcip->ri_gate_hp->h_addr_list[1] != NULL) { in print_rtcmd_short()
1132 rcip->ri_gate_str, obuf); in print_rtcmd_short()
1139 rcip->ri_gate_str); in print_rtcmd_short()
1146 set_metric(rtcmd_irep_t *rcip, char *value, int key, boolean_t lock) in set_metric() argument
1153 case (x): valp = &(rcip->ri_metrics.z); flag = (y); break in set_metric()
1165 rcip->ri_inits |= flag; in set_metric()
1167 rcip->ri_metrics.rmx_locks |= flag; in set_metric()
1180 args_to_rtcmd(rtcmd_irep_t *rcip, char **argv, char *cmd_string) in args_to_rtcmd() argument
1205 rcip->ri_cmd = RTM_ADD; in args_to_rtcmd()
1208 rcip->ri_cmd = RTM_CHANGE; in args_to_rtcmd()
1211 rcip->ri_cmd = RTM_DELETE; in args_to_rtcmd()
1214 rcip->ri_cmd = RTM_GET; in args_to_rtcmd()
1256 rcip->ri_af = AF_LINK; in args_to_rtcmd()
1259 rcip->ri_af = AF_INET; in args_to_rtcmd()
1262 rcip->ri_af = PF_ROUTE; in args_to_rtcmd()
1265 rcip->ri_af = AF_INET6; in args_to_rtcmd()
1272 rcip->ri_flags &= ~RTF_STATIC; in args_to_rtcmd()
1281 rcip->ri_flags |= RTF_REJECT; in args_to_rtcmd()
1284 rcip->ri_flags |= RTF_BLACKHOLE; in args_to_rtcmd()
1287 rcip->ri_flags |= RTF_PROTO1; in args_to_rtcmd()
1290 rcip->ri_flags |= RTF_PROTO2; in args_to_rtcmd()
1293 rcip->ri_flags |= RTF_CLONING; in args_to_rtcmd()
1296 rcip->ri_flags |= RTF_XRESOLVE; in args_to_rtcmd()
1299 rcip->ri_flags |= RTF_STATIC; in args_to_rtcmd()
1306 if (!getaddr(rcip, RTA_IFA, tok, atype)) { in args_to_rtcmd()
1315 if (!getaddr(rcip, RTA_IFP, tok, atype)) { in args_to_rtcmd()
1324 if (!getaddr(rcip, RTA_GATEWAY, tok, atype)) { in args_to_rtcmd()
1333 if (!getaddr(rcip, RTA_DST, tok, atype)) { in args_to_rtcmd()
1342 if (!getaddr(rcip, RTA_NETMASK, tok, atype)) { in args_to_rtcmd()
1359 set_metric(rcip, tok, key, locknext || lockrest); in args_to_rtcmd()
1363 rcip->ri_flags |= RTF_PRIVATE; in args_to_rtcmd()
1366 rcip->ri_flags |= RTF_MULTIRT; in args_to_rtcmd()
1373 if (!getaddr(rcip, RTA_SRC, tok, atype)) { in args_to_rtcmd()
1376 rcip->ri_flags |= RTF_SETSRC; in args_to_rtcmd()
1386 if (rcip->ri_rtsa_cnt >= 1) { in args_to_rtcmd()
1392 if (!rtsa_keyword(tok, &rcip->ri_rtsa, &err, in args_to_rtcmd()
1399 rcip->ri_rtsa_cnt++; in args_to_rtcmd()
1408 rcip->ri_flags |= RTF_INDIRECT; in args_to_rtcmd()
1415 if ((rcip->ri_addrs & RTA_DST) == 0) { in args_to_rtcmd()
1416 if (!getaddr(rcip, RTA_DST, tok, atype)) { in args_to_rtcmd()
1419 } else if ((rcip->ri_addrs & RTA_GATEWAY) == 0) { in args_to_rtcmd()
1426 if (!getaddr(rcip, RTA_GATEWAY, tok, atype)) { in args_to_rtcmd()
1449 if (!getaddr(rcip, RTA_NETMASK, tok, atype)) { in args_to_rtcmd()
1457 if ((rcip->ri_addrs & RTA_DST) == 0) { in args_to_rtcmd()
1460 } else if ((rcip->ri_cmd == RTM_ADD || rcip->ri_cmd == RTM_DELETE) && in args_to_rtcmd()
1461 (rcip->ri_addrs & RTA_GATEWAY) == 0) { in args_to_rtcmd()
1468 rcip->ri_flags |= RTF_GATEWAY; in args_to_rtcmd()
1472 if (rcip->ri_addrs & RTA_NETMASK) { in args_to_rtcmd()
1477 if (rcip->ri_af == AF_INET && in args_to_rtcmd()
1478 rcip->ri_mask.sin.sin_addr.s_addr == in args_to_rtcmd()
1480 rcip->ri_flags |= RTF_HOST; in args_to_rtcmd()
1482 if (rcip->ri_af == AF_INET6 && in args_to_rtcmd()
1483 memcmp(&rcip->ri_mask.sin6.sin6_addr, in args_to_rtcmd()
1486 rcip->ri_flags |= RTF_HOST; in args_to_rtcmd()
1494 rcip->ri_flags |= RTF_HOST; in args_to_rtcmd()
1910 inet_makenetandmask(rtcmd_irep_t *rcip, in_addr_t net, struct sockaddr_in *sin) in inet_makenetandmask() argument
1951 if (!(rcip->ri_addrs & RTA_NETMASK)) { in inet_makenetandmask()
1952 rcip->ri_addrs |= RTA_NETMASK; in inet_makenetandmask()
1953 sin = &rcip->ri_mask.sin; in inet_makenetandmask()
2042 getaddr(rtcmd_irep_t *rcip, int which, char *s, addr_type_t atype) in getaddr() argument
2050 hpp = &(rcip->ri_gate_hp); in getaddr()
2056 rcip->ri_addrs |= which; in getaddr()
2059 save_string(&rcip->ri_dest_str, s); in getaddr()
2060 su = &rcip->ri_dst; in getaddr()
2061 su->sa.sa_family = rcip->ri_af; in getaddr()
2064 save_string(&rcip->ri_gate_str, s); in getaddr()
2065 su = &rcip->ri_gate; in getaddr()
2066 su->sa.sa_family = rcip->ri_af; in getaddr()
2069 su = &rcip->ri_mask; in getaddr()
2070 su->sa.sa_family = rcip->ri_af; in getaddr()
2073 save_string(&rcip->ri_ifp_str, s); in getaddr()
2080 su = &rcip->ri_ifa; in getaddr()
2081 su->sa.sa_family = rcip->ri_af; in getaddr()
2084 su = &rcip->ri_src; in getaddr()
2085 su->sa.sa_family = rcip->ri_af; in getaddr()
2094 return (getaddr(rcip, RTA_NETMASK, s, ADDR_TYPE_NET)); in getaddr()
2101 switch (rcip->ri_af) { in getaddr()
2115 (void) memset(&rcip->ri_mask.sin6.sin6_addr, 0, in getaddr()
2116 sizeof (rcip->ri_mask.sin6.sin6_addr)); in getaddr()
2118 (uchar_t *)&rcip->ri_mask.sin6.sin6_addr)) { in getaddr()
2124 rcip->ri_mask.sin6.sin6_family = rcip->ri_af; in getaddr()
2125 rcip->ri_addrs |= RTA_NETMASK; in getaddr()
2145 atype, rcip)) { in getaddr()
2149 (void) memset(&rcip->ri_mask.sin.sin_addr, 0, in getaddr()
2150 sizeof (rcip->ri_mask.sin.sin_addr)); in getaddr()
2152 (uchar_t *)&rcip->ri_mask.sin.sin_addr)) { in getaddr()
2158 rcip->ri_mask.sin.sin_family = rcip->ri_af; in getaddr()
2159 rcip->ri_addrs |= RTA_NETMASK; in getaddr()
2167 rcip)); in getaddr()
2194 struct hostent **hpp, addr_type_t atype, rtcmd_irep_t *rcip) in in_getaddr() argument
2240 inet_makenetandmask(rcip, ntohl(val), in in_getaddr()
2261 inet_makenetandmask(rcip, val, sin); in in_getaddr()