MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vxlan_clone_create

Function vxlan_clone_create

freebsd/net/if_vxlan.c:3154–3220  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3152}
3153
3154static int
3155vxlan_clone_create(struct if_clone *ifc, int unit, caddr_t params)
3156{
3157 struct vxlan_softc *sc;
3158 struct ifnet *ifp;
3159 struct ifvxlanparam vxlp;
3160 int error;
3161
3162 sc = malloc(sizeof(struct vxlan_softc), M_VXLAN, M_WAITOK | M_ZERO);
3163 sc->vxl_unit = unit;
3164 vxlan_set_default_config(sc);
3165 error = vxlan_stats_alloc(sc);
3166 if (error != 0)
3167 goto fail;
3168
3169 if (params != 0) {
3170 error = copyin(params, &vxlp, sizeof(vxlp));
3171 if (error)
3172 goto fail;
3173
3174 error = vxlan_set_user_config(sc, &vxlp);
3175 if (error)
3176 goto fail;
3177 }
3178
3179 ifp = if_alloc(IFT_ETHER);
3180 if (ifp == NULL) {
3181 error = ENOSPC;
3182 goto fail;
3183 }
3184
3185 sc->vxl_ifp = ifp;
3186 rm_init(&sc->vxl_lock, "vxlanrm");
3187 callout_init_rw(&sc->vxl_callout, &sc->vxl_lock, 0);
3188 sc->vxl_port_hash_key = arc4random();
3189 vxlan_ftable_init(sc);
3190
3191 vxlan_sysctl_setup(sc);
3192
3193 ifp->if_softc = sc;
3194 if_initname(ifp, vxlan_name, unit);
3195 ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
3196 ifp->if_init = vxlan_init;
3197 ifp->if_ioctl = vxlan_ioctl;
3198 ifp->if_transmit = vxlan_transmit;
3199 ifp->if_qflush = vxlan_qflush;
3200 ifp->if_capabilities = VXLAN_BASIC_IFCAPS;
3201 ifp->if_capenable = VXLAN_BASIC_IFCAPS;
3202 sc->vxl_reqcap = -1;
3203 vxlan_set_hwcaps(sc);
3204
3205 ifmedia_init(&sc->vxl_media, 0, vxlan_media_change, vxlan_media_status);
3206 ifmedia_add(&sc->vxl_media, IFM_ETHER | IFM_AUTO, 0, NULL);
3207 ifmedia_set(&sc->vxl_media, IFM_ETHER | IFM_AUTO);
3208
3209 ether_gen_addr(ifp, &sc->vxl_hwaddr);
3210 ether_ifattach(ifp, sc->vxl_hwaddr.octet);
3211

Callers

nothing calls this directly

Calls 15

mallocFunction · 0.85
vxlan_set_default_configFunction · 0.85
vxlan_stats_allocFunction · 0.85
vxlan_set_user_configFunction · 0.85
if_allocFunction · 0.85
vxlan_ftable_initFunction · 0.85
vxlan_sysctl_setupFunction · 0.85
if_initnameFunction · 0.85
vxlan_set_hwcapsFunction · 0.85
ifmedia_initFunction · 0.85
ifmedia_addFunction · 0.85
ifmedia_setFunction · 0.85

Tested by

no test coverage detected