• Home
  • Raw
  • Download

Lines Matching refs:r

1013 static int arp_req_set_public(struct net *net, struct arpreq *r,  in arp_req_set_public()  argument
1016 __be32 ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr; in arp_req_set_public()
1017 __be32 mask = ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr; in arp_req_set_public()
1021 if (!dev && (r->arp_flags & ATF_COM)) { in arp_req_set_public()
1022 dev = dev_getbyhwaddr_rcu(net, r->arp_ha.sa_family, in arp_req_set_public()
1023 r->arp_ha.sa_data); in arp_req_set_public()
1036 static int arp_req_set(struct net *net, struct arpreq *r, in arp_req_set() argument
1043 if (r->arp_flags & ATF_PUBL) in arp_req_set()
1044 return arp_req_set_public(net, r, dev); in arp_req_set()
1046 ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr; in arp_req_set()
1047 if (r->arp_flags & ATF_PERM) in arp_req_set()
1048 r->arp_flags |= ATF_COM; in arp_req_set()
1068 if (r->arp_ha.sa_family != ARPHRD_FDDI && in arp_req_set()
1069 r->arp_ha.sa_family != ARPHRD_ETHER && in arp_req_set()
1070 r->arp_ha.sa_family != ARPHRD_IEEE802) in arp_req_set()
1075 if (r->arp_ha.sa_family != dev->type) in arp_req_set()
1084 if (r->arp_flags & ATF_PERM) in arp_req_set()
1086 err = neigh_update(neigh, (r->arp_flags & ATF_COM) ? in arp_req_set()
1087 r->arp_ha.sa_data : NULL, state, in arp_req_set()
1109 static int arp_req_get(struct arpreq *r, struct net_device *dev) in arp_req_get() argument
1111 __be32 ip = ((struct sockaddr_in *) &r->arp_pa)->sin_addr.s_addr; in arp_req_get()
1118 memcpy(r->arp_ha.sa_data, neigh->ha, dev->addr_len); in arp_req_get()
1119 r->arp_flags = arp_state_to_flags(neigh); in arp_req_get()
1121 r->arp_ha.sa_family = dev->type; in arp_req_get()
1122 strlcpy(r->arp_dev, dev->name, sizeof(r->arp_dev)); in arp_req_get()
1145 static int arp_req_delete_public(struct net *net, struct arpreq *r, in arp_req_delete_public() argument
1148 __be32 ip = ((struct sockaddr_in *) &r->arp_pa)->sin_addr.s_addr; in arp_req_delete_public()
1149 __be32 mask = ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr; in arp_req_delete_public()
1160 static int arp_req_delete(struct net *net, struct arpreq *r, in arp_req_delete() argument
1165 if (r->arp_flags & ATF_PUBL) in arp_req_delete()
1166 return arp_req_delete_public(net, r, dev); in arp_req_delete()
1168 ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr; in arp_req_delete()
1188 struct arpreq r; in arp_ioctl() local
1197 err = copy_from_user(&r, arg, sizeof(struct arpreq)); in arp_ioctl()
1205 if (r.arp_pa.sa_family != AF_INET) in arp_ioctl()
1208 if (!(r.arp_flags & ATF_PUBL) && in arp_ioctl()
1209 (r.arp_flags & (ATF_NETMASK | ATF_DONTPUB))) in arp_ioctl()
1211 if (!(r.arp_flags & ATF_NETMASK)) in arp_ioctl()
1212 ((struct sockaddr_in *)&r.arp_netmask)->sin_addr.s_addr = in arp_ioctl()
1215 if (r.arp_dev[0]) { in arp_ioctl()
1217 dev = __dev_get_by_name(net, r.arp_dev); in arp_ioctl()
1222 if (!r.arp_ha.sa_family) in arp_ioctl()
1223 r.arp_ha.sa_family = dev->type; in arp_ioctl()
1225 if ((r.arp_flags & ATF_COM) && r.arp_ha.sa_family != dev->type) in arp_ioctl()
1234 err = arp_req_delete(net, &r, dev); in arp_ioctl()
1237 err = arp_req_set(net, &r, dev); in arp_ioctl()
1240 err = arp_req_get(&r, dev); in arp_ioctl()
1245 if (cmd == SIOCGARP && !err && copy_to_user(arg, &r, sizeof(r))) in arp_ioctl()