seg6.c (5db5b395150186d4a177ebfa563894af302ab3ad) seg6.c (46738b1317e169b281ad74690276916e24d1be6d)
1/*
2 * SR-IPv6 implementation
3 *
4 * Author:
5 * David Lebrun <david.lebrun@uclouvain.be>
6 *
7 *
8 * This program is free software; you can redistribute it and/or

--- 437 unchanged lines hidden (view full) ---

446 err = genl_register_family(&seg6_genl_family);
447 if (err)
448 goto out;
449
450 err = register_pernet_subsys(&ip6_segments_ops);
451 if (err)
452 goto out_unregister_genl;
453
1/*
2 * SR-IPv6 implementation
3 *
4 * Author:
5 * David Lebrun <david.lebrun@uclouvain.be>
6 *
7 *
8 * This program is free software; you can redistribute it and/or

--- 437 unchanged lines hidden (view full) ---

446 err = genl_register_family(&seg6_genl_family);
447 if (err)
448 goto out;
449
450 err = register_pernet_subsys(&ip6_segments_ops);
451 if (err)
452 goto out_unregister_genl;
453
454#ifdef CONFIG_IPV6_SEG6_LWTUNNEL
454 err = seg6_iptunnel_init();
455 if (err)
456 goto out_unregister_pernet;
455 err = seg6_iptunnel_init();
456 if (err)
457 goto out_unregister_pernet;
458#endif
457
458#ifdef CONFIG_IPV6_SEG6_HMAC
459 err = seg6_hmac_init();
460 if (err)
461 goto out_unregister_iptun;
462#endif
463
464 pr_info("Segment Routing with IPv6\n");
465
466out:
467 return err;
468#ifdef CONFIG_IPV6_SEG6_HMAC
469out_unregister_iptun:
459
460#ifdef CONFIG_IPV6_SEG6_HMAC
461 err = seg6_hmac_init();
462 if (err)
463 goto out_unregister_iptun;
464#endif
465
466 pr_info("Segment Routing with IPv6\n");
467
468out:
469 return err;
470#ifdef CONFIG_IPV6_SEG6_HMAC
471out_unregister_iptun:
472#ifdef CONFIG_IPV6_SEG6_LWTUNNEL
470 seg6_iptunnel_exit();
471#endif
473 seg6_iptunnel_exit();
474#endif
475#endif
476#ifdef CONFIG_IPV6_SEG6_LWTUNNEL
472out_unregister_pernet:
473 unregister_pernet_subsys(&ip6_segments_ops);
477out_unregister_pernet:
478 unregister_pernet_subsys(&ip6_segments_ops);
479#endif
474out_unregister_genl:
475 genl_unregister_family(&seg6_genl_family);
476 goto out;
477}
478
479void seg6_exit(void)
480{
481#ifdef CONFIG_IPV6_SEG6_HMAC
482 seg6_hmac_exit();
483#endif
480out_unregister_genl:
481 genl_unregister_family(&seg6_genl_family);
482 goto out;
483}
484
485void seg6_exit(void)
486{
487#ifdef CONFIG_IPV6_SEG6_HMAC
488 seg6_hmac_exit();
489#endif
490#ifdef CONFIG_IPV6_SEG6_LWTUNNEL
484 seg6_iptunnel_exit();
491 seg6_iptunnel_exit();
492#endif
485 unregister_pernet_subsys(&ip6_segments_ops);
486 genl_unregister_family(&seg6_genl_family);
487}
493 unregister_pernet_subsys(&ip6_segments_ops);
494 genl_unregister_family(&seg6_genl_family);
495}