mirror of
https://github.com/open5gs/open5gs.git
synced 2025-10-24 16:43:44 +00:00
Compare commits
1044 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ac74ef6ac | ||
|
|
aeedf01d6a | ||
|
|
8902411afe | ||
|
|
1a26354f29 | ||
|
|
712b9c8334 | ||
|
|
693afa922f | ||
|
|
058ebc747d | ||
|
|
5ca6d79590 | ||
|
|
652cfa70d5 | ||
|
|
bbc594330b | ||
|
|
c284ef7429 | ||
|
|
95586eaf09 | ||
|
|
eca47a2773 | ||
|
|
0e0a69ed7c | ||
|
|
5ce95f94ee | ||
|
|
6b0561681f | ||
|
|
d0417d353a | ||
|
|
4013d9203c | ||
|
|
fba54b09eb | ||
|
|
8a711191b3 | ||
|
|
f53e80eec7 | ||
|
|
fa454209a9 | ||
|
|
7ee0b3324b | ||
|
|
bfa526d221 | ||
|
|
6816400247 | ||
|
|
3b26983db9 | ||
|
|
eab4958a81 | ||
|
|
e2aa8ec198 | ||
|
|
ec7d9f2917 | ||
|
|
0be339e52d | ||
|
|
fa81c86e22 | ||
|
|
1f838c0f68 | ||
|
|
aa0001c78b | ||
|
|
c49bda5173 | ||
|
|
bb703243c6 | ||
|
|
f3a6620a65 | ||
|
|
cb00bf848e | ||
|
|
343c72b288 | ||
|
|
bcd784b1f0 | ||
|
|
c855546d77 | ||
|
|
f550919df1 | ||
|
|
f6a8985267 | ||
|
|
1542d70af6 | ||
|
|
3d154cc423 | ||
|
|
fbc73230b0 | ||
|
|
55164b4a1f | ||
|
|
c52cf33c3c | ||
|
|
eb0d8075ef | ||
|
|
d3476eca6d | ||
|
|
9e3ebf9a16 | ||
|
|
88217ff11e | ||
|
|
a550cf5b1d | ||
|
|
d7131dc2e1 | ||
|
|
22c3d66bc3 | ||
|
|
f28f3003c5 | ||
|
|
c530e1cbcf | ||
|
|
3c61858f21 | ||
|
|
477f16ad0b | ||
|
|
75a18a30cf | ||
|
|
a32465ed07 | ||
|
|
7bc245028a | ||
|
|
56567fec12 | ||
|
|
dc7f9d8e12 | ||
|
|
57af70fab9 | ||
|
|
71f1b1cfa4 | ||
|
|
60dc4402c6 | ||
|
|
d4f00da662 | ||
|
|
0ff388fb19 | ||
|
|
ca742661f6 | ||
|
|
c849cc802c | ||
|
|
4fc1e0e22c | ||
|
|
d41ce4d8b1 | ||
|
|
8dc5211448 | ||
|
|
24da20bdc8 | ||
|
|
70b2e51f79 | ||
|
|
9e4d3cb824 | ||
|
|
10675caf89 | ||
|
|
fb1908410e | ||
|
|
b9c0feb40e | ||
|
|
29a50892b5 | ||
|
|
f7ef0f3aab | ||
|
|
5f4b42cbfc | ||
|
|
681a7c87a4 | ||
|
|
a03df8d656 | ||
|
|
a7053eb926 | ||
|
|
fe91a72271 | ||
|
|
5693c0c730 | ||
|
|
eb8b7e96d7 | ||
|
|
85bedf1e35 | ||
|
|
8f8caf5177 | ||
|
|
756859d05c | ||
|
|
d4023da087 | ||
|
|
f384bdef3d | ||
|
|
4cdc891898 | ||
|
|
7abd6b5ab9 | ||
|
|
8a7634d00c | ||
|
|
1f752e51e8 | ||
|
|
282936f215 | ||
|
|
60bfaa2c41 | ||
|
|
937f0319e3 | ||
|
|
32c9c512d8 | ||
|
|
163bc4a040 | ||
|
|
58faa7bcac | ||
|
|
61d0573686 | ||
|
|
f0c84d3037 | ||
|
|
69cfb3280c | ||
|
|
d597912abb | ||
|
|
34e2b4d44a | ||
|
|
241efaf581 | ||
|
|
335e8513e9 | ||
|
|
cbb819f6b9 | ||
|
|
2267a59cc3 | ||
|
|
550be1cd95 | ||
|
|
338f359285 | ||
|
|
3da632dd1e | ||
|
|
8b782eb370 | ||
|
|
5bca0920b9 | ||
|
|
bd1c505024 | ||
|
|
1ed22fe7b2 | ||
|
|
71367627a8 | ||
|
|
88d0a53956 | ||
|
|
4d7b6c04c5 | ||
|
|
e032565991 | ||
|
|
f19f714136 | ||
|
|
94797e7d7a | ||
|
|
581f4feb97 | ||
|
|
7c1c320141 | ||
|
|
244770de65 | ||
|
|
68ac111bd5 | ||
|
|
56556195a9 | ||
|
|
9be8d1fd00 | ||
|
|
cdffdcaa78 | ||
|
|
ed803b27cb | ||
|
|
314642fe1a | ||
|
|
d58ddcb3ae | ||
|
|
60277dcf05 | ||
|
|
77b8656dc3 | ||
|
|
0f892f6e84 | ||
|
|
8ae096f77e | ||
|
|
6c99b7c187 | ||
|
|
fe68841456 | ||
|
|
314a1cd4be | ||
|
|
179df88c32 | ||
|
|
bc180c3ffc | ||
|
|
ab81e38487 | ||
|
|
2d7438313d | ||
|
|
bb67705a66 | ||
|
|
f097364d52 | ||
|
|
0992fbe7f3 | ||
|
|
9bef56806e | ||
|
|
2ef9718209 | ||
|
|
d744893fba | ||
|
|
0291d97dd5 | ||
|
|
a5f764544f | ||
|
|
39766bc379 | ||
|
|
bf1c6c00fe | ||
|
|
c8ed909f46 | ||
|
|
49adabdc70 | ||
|
|
e5523342d4 | ||
|
|
08efe857a0 | ||
|
|
aec51b399a | ||
|
|
ce2590d6fc | ||
|
|
157d5fd739 | ||
|
|
1e2ca81ae3 | ||
|
|
de2cadd926 | ||
|
|
dacfb7d209 | ||
|
|
f87ecc9e2c | ||
|
|
1300a4f0e7 | ||
|
|
16ea21d4a0 | ||
|
|
92733e71be | ||
|
|
8a5ef1ac1a | ||
|
|
6294ae3349 | ||
|
|
59cd4aaa2e | ||
|
|
b9e3d76783 | ||
|
|
3defa0974c | ||
|
|
bb2e976958 | ||
|
|
9b53988ab6 | ||
|
|
af1b87002a | ||
|
|
75b09fe410 | ||
|
|
c47f065e1a | ||
|
|
48bfe83c0f | ||
|
|
3ff9c6bbb5 | ||
|
|
1b62f07684 | ||
|
|
0ebd85f364 | ||
|
|
4165ec1264 | ||
|
|
540a3956bb | ||
|
|
9919e7dc86 | ||
|
|
6bd8411fc1 | ||
|
|
8fea12643a | ||
|
|
c964d1df3c | ||
|
|
ddaea685b3 | ||
|
|
e1ad9c43d7 | ||
|
|
0b91d42cb1 | ||
|
|
653701abdb | ||
|
|
58bcda332b | ||
|
|
8cb620e477 | ||
|
|
5cac796e46 | ||
|
|
8c68560ccd | ||
|
|
b2c6c8f856 | ||
|
|
f753d38338 | ||
|
|
c711e788d2 | ||
|
|
26f4081979 | ||
|
|
3427835ecc | ||
|
|
7312dd1974 | ||
|
|
f5599896ff | ||
|
|
aea1d83026 | ||
|
|
3dc2d396db | ||
|
|
d004770e17 | ||
|
|
f049ffb945 | ||
|
|
3b66bf09aa | ||
|
|
0e7cf76f8a | ||
|
|
0ce11e3a7c | ||
|
|
d96efc6ea9 | ||
|
|
a5dd751817 | ||
|
|
334de68d85 | ||
|
|
295213dd62 | ||
|
|
0a93c886ad | ||
|
|
f91b872d0b | ||
|
|
283e37ca26 | ||
|
|
e2afb6b2fc | ||
|
|
51b07a496e | ||
|
|
c3e5bdba53 | ||
|
|
271949ad86 | ||
|
|
7ed6d53604 | ||
|
|
85a100c69d | ||
|
|
3327420b6f | ||
|
|
64a9fef969 | ||
|
|
95079a8e90 | ||
|
|
1c658c1e45 | ||
|
|
06e56a4509 | ||
|
|
2295636f36 | ||
|
|
8f9219bef0 | ||
|
|
b2f957dc8e | ||
|
|
71c7508047 | ||
|
|
bc87fc9c18 | ||
|
|
50fdf5474f | ||
|
|
51fde0acd8 | ||
|
|
5ee7cdd3f8 | ||
|
|
048eb3f2b2 | ||
|
|
352b02fc3e | ||
|
|
9d8695fa31 | ||
|
|
9415f5215c | ||
|
|
8c674aa134 | ||
|
|
3b9b1108b1 | ||
|
|
9aed43075c | ||
|
|
3d78f285be | ||
|
|
749d632b86 | ||
|
|
37ecb9a63b | ||
|
|
0d3af830bb | ||
|
|
7c7cfd1cbf | ||
|
|
4f1efbb521 | ||
|
|
2fb37ad797 | ||
|
|
ffa6c2c15b | ||
|
|
c906b243a2 | ||
|
|
056fc43d34 | ||
|
|
76c84bdaa4 | ||
|
|
6ae20c9d1c | ||
|
|
fe84604fa0 | ||
|
|
85a2a64b65 | ||
|
|
f5c203d3ac | ||
|
|
9a0afe035a | ||
|
|
76d8df3879 | ||
|
|
550a606306 | ||
|
|
1b21c21395 | ||
|
|
157dab73c7 | ||
|
|
7dba30b1e6 | ||
|
|
55fa0115e8 | ||
|
|
2142d406f0 | ||
|
|
9d84d4d43a | ||
|
|
57ef9697c3 | ||
|
|
280aaf9fe1 | ||
|
|
529b55c16b | ||
|
|
10f59c850b | ||
|
|
e18467889c | ||
|
|
3148d4cd67 | ||
|
|
de92fdd5c7 | ||
|
|
f3ddfaec44 | ||
|
|
2d5f9d0d26 | ||
|
|
765eb2ada0 | ||
|
|
ee3c2d29bf | ||
|
|
60aca81a1f | ||
|
|
e60a3d567d | ||
|
|
c968067829 | ||
|
|
553804dd94 | ||
|
|
38a252bbf0 | ||
|
|
ae1660c436 | ||
|
|
d2aed88ac6 | ||
|
|
e5a0b1ff69 | ||
|
|
539d0c7bc5 | ||
|
|
a1e06c919f | ||
|
|
935e4b56ef | ||
|
|
2a1feae83f | ||
|
|
b1055f703a | ||
|
|
dab5bae4ed | ||
|
|
8ff9a7cf4c | ||
|
|
82dee88309 | ||
|
|
6ff80f4457 | ||
|
|
62eed38e63 | ||
|
|
e66c8270d8 | ||
|
|
ab6f48193b | ||
|
|
f3b4a9b70f | ||
|
|
80b14b85f0 | ||
|
|
db1d139364 | ||
|
|
03644bdb0c | ||
|
|
c944e87d5a | ||
|
|
778d23e717 | ||
|
|
ef9d5948a8 | ||
|
|
13ece7f4d4 | ||
|
|
a9e5283db3 | ||
|
|
87b6896128 | ||
|
|
6c692e05f5 | ||
|
|
bf6e3cdc8c | ||
|
|
8a2699b81f | ||
|
|
d503fadd55 | ||
|
|
463e40d41b | ||
|
|
4b32d7f448 | ||
|
|
25c90c0e96 | ||
|
|
1cd740704e | ||
|
|
9434c751cb | ||
|
|
0414f19684 | ||
|
|
5d21ae4071 | ||
|
|
f89358dc03 | ||
|
|
4c8123f771 | ||
|
|
637d8613ba | ||
|
|
d881f8c2ed | ||
|
|
dbdd6bfdcf | ||
|
|
99a8e06ccf | ||
|
|
a11f6e431c | ||
|
|
8e52447a53 | ||
|
|
5172d2034a | ||
|
|
49fba95ebb | ||
|
|
74834c0eb4 | ||
|
|
422d1c2f8f | ||
|
|
98a317b4b9 | ||
|
|
ff3dc862b3 | ||
|
|
9e55f1c78a | ||
|
|
c7d24c804b | ||
|
|
308c6f1e66 | ||
|
|
6480689da4 | ||
|
|
2c1d70de3c | ||
|
|
d40bf0463d | ||
|
|
e10d358a2b | ||
|
|
bb844434f2 | ||
|
|
6c3390bf30 | ||
|
|
c31dfb507d | ||
|
|
5fad2f0e5c | ||
|
|
e69cea9b5b | ||
|
|
1c8d10a696 | ||
|
|
0d073fbb73 | ||
|
|
c5689b3f66 | ||
|
|
0c9b034f12 | ||
|
|
16b69865ac | ||
|
|
fa981b8028 | ||
|
|
0628b76296 | ||
|
|
0d8928ff05 | ||
|
|
da04290a62 | ||
|
|
6f9e45a332 | ||
|
|
9357381839 | ||
|
|
8ab602e6d2 | ||
|
|
84e7f50b3f | ||
|
|
2bc92c5ac8 | ||
|
|
2429a4e363 | ||
|
|
dab0f3ef3a | ||
|
|
144548f4c0 | ||
|
|
1f44efbc3d | ||
|
|
6df88862f9 | ||
|
|
f49a66dfc5 | ||
|
|
7e8718e346 | ||
|
|
02712a38e6 | ||
|
|
888cbfbdb8 | ||
|
|
cdf7fb94bf | ||
|
|
e4989c7aa3 | ||
|
|
5365893c34 | ||
|
|
3c65414135 | ||
|
|
80bcfcf646 | ||
|
|
7e460fbcb4 | ||
|
|
62fe796d41 | ||
|
|
0104543f7d | ||
|
|
39c30cb908 | ||
|
|
c09b272e53 | ||
|
|
92d8bde84a | ||
|
|
e2bb5706fa | ||
|
|
d74afc5bc7 | ||
|
|
c8a65b6b18 | ||
|
|
f5582c97b5 | ||
|
|
b8cc130bf5 | ||
|
|
12d65e92d1 | ||
|
|
2904284405 | ||
|
|
f1b0cd5748 | ||
|
|
91c9586561 | ||
|
|
05cfcf4cc3 | ||
|
|
c827701824 | ||
|
|
5fcc7e2ee6 | ||
|
|
bd1dff2dc5 | ||
|
|
f1ad0b11ae | ||
|
|
9a86d4cb7c | ||
|
|
38cccb8a85 | ||
|
|
2d72eaa24d | ||
|
|
f915820f3a | ||
|
|
1009ac5e47 | ||
|
|
536138457e | ||
|
|
730053cef4 | ||
|
|
4a01623d6e | ||
|
|
0cf0e73bf9 | ||
|
|
87e7992450 | ||
|
|
75aaf632b8 | ||
|
|
5c3c99acda | ||
|
|
081170a86e | ||
|
|
c9b4a20223 | ||
|
|
926e73e87d | ||
|
|
61f796d341 | ||
|
|
03715c84be | ||
|
|
72d28286ea | ||
|
|
c2d68cf4b6 | ||
|
|
e99f6c7789 | ||
|
|
340b3cb69c | ||
|
|
5d8231e6c2 | ||
|
|
1e5313c230 | ||
|
|
d488bc3ed7 | ||
|
|
0de9185545 | ||
|
|
9563e49f48 | ||
|
|
881196cde2 | ||
|
|
c096cce571 | ||
|
|
3c33206dee | ||
|
|
382c52a481 | ||
|
|
f904b63053 | ||
|
|
7769ded65a | ||
|
|
0170166b6b | ||
|
|
935e81f9c9 | ||
|
|
9fbcb45171 | ||
|
|
c9596d82f7 | ||
|
|
598b711c01 | ||
|
|
f9096d55f5 | ||
|
|
0e87056e2e | ||
|
|
ad10c84ffe | ||
|
|
7b99cc7d7c | ||
|
|
75cc9bbb47 | ||
|
|
3a57990cbc | ||
|
|
14ef938fb9 | ||
|
|
5c1a3d54e3 | ||
|
|
2defa5c868 | ||
|
|
4371084af4 | ||
|
|
c0d4f25717 | ||
|
|
aacaa83eea | ||
|
|
de04e1de45 | ||
|
|
95551de5f9 | ||
|
|
bb4339de2a | ||
|
|
831b3e8985 | ||
|
|
f37b3cbfd3 | ||
|
|
23998862f2 | ||
|
|
e72d79a328 | ||
|
|
66d16ae1bb | ||
|
|
00178ff65e | ||
|
|
582c771605 | ||
|
|
52a1e05f41 | ||
|
|
c293bef05a | ||
|
|
ebddb2ad9f | ||
|
|
7c2dd5e462 | ||
|
|
f61233e627 | ||
|
|
b97597ae7c | ||
|
|
57f3baa273 | ||
|
|
d944bca038 | ||
|
|
857a250e4f | ||
|
|
34986be707 | ||
|
|
cb7132a2fa | ||
|
|
5397cfd2d8 | ||
|
|
0cd0221b29 | ||
|
|
8bd186adad | ||
|
|
4e5d156a6a | ||
|
|
c9e44579d8 | ||
|
|
4648dc05d5 | ||
|
|
ca79c05fe6 | ||
|
|
b040214364 | ||
|
|
c3afd65ff3 | ||
|
|
f4baa62209 | ||
|
|
03cf945f95 | ||
|
|
01d7f157ff | ||
|
|
e49e1d2331 | ||
|
|
67393d0160 | ||
|
|
7ca9ead4b9 | ||
|
|
3f7c3d3041 | ||
|
|
cf6df20ad7 | ||
|
|
b77c9b8ff6 | ||
|
|
795ecc8cf8 | ||
|
|
b704e94efa | ||
|
|
ae6e747e52 | ||
|
|
60cfbed747 | ||
|
|
597fcfbad9 | ||
|
|
762431cb6f | ||
|
|
21a130bc16 | ||
|
|
5774aeb62d | ||
|
|
7b2355a40f | ||
|
|
28237ea6af | ||
|
|
09969e859d | ||
|
|
9451928786 | ||
|
|
c6bfed6628 | ||
|
|
20efdd5639 | ||
|
|
dfb9755295 | ||
|
|
6272d170e0 | ||
|
|
e31976e505 | ||
|
|
4c98dae79e | ||
|
|
94145fec62 | ||
|
|
bba98cf066 | ||
|
|
9503c8efdc | ||
|
|
f5f4e42be9 | ||
|
|
afafce6760 | ||
|
|
49cfb51a65 | ||
|
|
02a11b6c50 | ||
|
|
859322cb22 | ||
|
|
b1c61cfcbf | ||
|
|
ed92c30b26 | ||
|
|
610292fb5c | ||
|
|
66d71924ce | ||
|
|
b37a74416a | ||
|
|
35a95fd4ac | ||
|
|
d66e25dda3 | ||
|
|
6850e3b2a3 | ||
|
|
225e1ba07f | ||
|
|
67870af84f | ||
|
|
17cbd61552 | ||
|
|
ebd8d2f571 | ||
|
|
7d43bd870e | ||
|
|
f94553bc8a | ||
|
|
6e6eb7a355 | ||
|
|
b678d9e9a2 | ||
|
|
4c8e2add2f | ||
|
|
8557d50341 | ||
|
|
e785d4ca4e | ||
|
|
32d62805df | ||
|
|
4eb314d781 | ||
|
|
1d947c5698 | ||
|
|
05f631f0ac | ||
|
|
9b9bfdc0b0 | ||
|
|
f93d367eee | ||
|
|
6bcd72cf45 | ||
|
|
2a6102d207 | ||
|
|
734ac953a7 | ||
|
|
56dd6b6a28 | ||
|
|
3be652701e | ||
|
|
862571c8ed | ||
|
|
907c3f2f3c | ||
|
|
baf273c06e | ||
|
|
cb50821aa8 | ||
|
|
1830b0bc75 | ||
|
|
d02763dde5 | ||
|
|
ee0d7fe7d8 | ||
|
|
e4c189fec2 | ||
|
|
2701add779 | ||
|
|
9b8eef2545 | ||
|
|
52c6504c65 | ||
|
|
f35aa2178f | ||
|
|
46f85d9fc8 | ||
|
|
131babeddc | ||
|
|
6acdff21bb | ||
|
|
e0504dcf12 | ||
|
|
95708a6ce4 | ||
|
|
c9b4a1023b | ||
|
|
8025f10586 | ||
|
|
e2f1872ea7 | ||
|
|
8ae6f82aee | ||
|
|
2620a4bd44 | ||
|
|
3334afe891 | ||
|
|
ab4c8f3e9e | ||
|
|
c56f75299c | ||
|
|
8537aaee1b | ||
|
|
d13b735d26 | ||
|
|
3662ad423e | ||
|
|
d8f23bed1a | ||
|
|
131fb3ac79 | ||
|
|
fffd654391 | ||
|
|
c12e76e32d | ||
|
|
f1e41050c3 | ||
|
|
4acc21093b | ||
|
|
543753d0d1 | ||
|
|
2bb9446fa2 | ||
|
|
73a352657d | ||
|
|
47407e4855 | ||
|
|
60b59babe0 | ||
|
|
733f598f24 | ||
|
|
521b18ea2a | ||
|
|
5457e4042e | ||
|
|
4b0565c2e9 | ||
|
|
d1303a60e4 | ||
|
|
257d58d999 | ||
|
|
059a71822c | ||
|
|
d77be669a9 | ||
|
|
c1848e03a1 | ||
|
|
ee770398c2 | ||
|
|
11b4463ce4 | ||
|
|
4b1c4b598b | ||
|
|
2884430c57 | ||
|
|
853913b31d | ||
|
|
8c3d4ca0de | ||
|
|
63562dd63a | ||
|
|
4417578210 | ||
|
|
694c39c69e | ||
|
|
9675c3bf8c | ||
|
|
8753879a93 | ||
|
|
f41559c55f | ||
|
|
7e2488035e | ||
|
|
b424213768 | ||
|
|
3503fda431 | ||
|
|
47dc5eec38 | ||
|
|
1498f6c015 | ||
|
|
7a771173bc | ||
|
|
9ec0867941 | ||
|
|
f360d20f01 | ||
|
|
2059341d4f | ||
|
|
58f501d397 | ||
|
|
95aaf2f8f1 | ||
|
|
e24856eb0e | ||
|
|
e7c14242c7 | ||
|
|
0a490cf819 | ||
|
|
b25082cb06 | ||
|
|
81a957172b | ||
|
|
a5057c1488 | ||
|
|
60b82c75e6 | ||
|
|
1f0452d37d | ||
|
|
e9da026495 | ||
|
|
b99c266533 | ||
|
|
b80b295af4 | ||
|
|
a15b60024b | ||
|
|
1a9ba2680b | ||
|
|
06a4a09d08 | ||
|
|
20f45a455e | ||
|
|
2406bf8d19 | ||
|
|
13a06479a9 | ||
|
|
38e245d467 | ||
|
|
e4397176cf | ||
|
|
779d5e88d0 | ||
|
|
e95dcf192d | ||
|
|
69a880b5fe | ||
|
|
64268232b1 | ||
|
|
5ca708deab | ||
|
|
7e63ab488d | ||
|
|
229a56f85d | ||
|
|
d2e54482c1 | ||
|
|
5a96013bf8 | ||
|
|
8e8d0c2978 | ||
|
|
a13f21b115 | ||
|
|
09eceddd97 | ||
|
|
a630830f0c | ||
|
|
cd45d6d2c5 | ||
|
|
f717eeb3ae | ||
|
|
9e8ced5835 | ||
|
|
f945b483e8 | ||
|
|
b166adf3bd | ||
|
|
9cca50b7c7 | ||
|
|
add2145851 | ||
|
|
65e1a8dbac | ||
|
|
b0b7e9f167 | ||
|
|
9d14f5e89d | ||
|
|
9675c47a10 | ||
|
|
627077247c | ||
|
|
b8ef9e9e2a | ||
|
|
fe1c368577 | ||
|
|
1a3f5cf86e | ||
|
|
560204ab46 | ||
|
|
e4bec187fd | ||
|
|
9544a79c2c | ||
|
|
81be4cca66 | ||
|
|
4501a76d96 | ||
|
|
408ce293de | ||
|
|
18859c1203 | ||
|
|
f40159ea2a | ||
|
|
8081ea3044 | ||
|
|
c81e2beee6 | ||
|
|
a864b36f44 | ||
|
|
0557be8ffd | ||
|
|
7d3ec80f5d | ||
|
|
7a293e8d3a | ||
|
|
72c9ae5d56 | ||
|
|
f71b2502ad | ||
|
|
e7207e74d2 | ||
|
|
385d73e17a | ||
|
|
d85f546de2 | ||
|
|
fdebe90f7c | ||
|
|
65088e690d | ||
|
|
48c5574819 | ||
|
|
b52d1faa64 | ||
|
|
92cebbce2d | ||
|
|
996a0df756 | ||
|
|
a3fbbf70cb | ||
|
|
466b15f5ad | ||
|
|
a39764cf50 | ||
|
|
0fab5ee3da | ||
|
|
573d509919 | ||
|
|
03f681ca05 | ||
|
|
649fd75b14 | ||
|
|
8f1df48a95 | ||
|
|
de09353e5d | ||
|
|
487a4eb155 | ||
|
|
1131166988 | ||
|
|
88f34c42be | ||
|
|
cdaf1c0468 | ||
|
|
a102864428 | ||
|
|
a5cc4f7a43 | ||
|
|
73fb7e1c30 | ||
|
|
fa6bb86e3d | ||
|
|
8d3330cb79 | ||
|
|
60804c79d6 | ||
|
|
0cf2319b9c | ||
|
|
f0f5a5ce31 | ||
|
|
0c3054652d | ||
|
|
7ea5f3d910 | ||
|
|
16080d9aa7 | ||
|
|
d7696f4fa6 | ||
|
|
f38587595f | ||
|
|
9d4afbba97 | ||
|
|
04d3753f1c | ||
|
|
ba5687de1b | ||
|
|
52b2125538 | ||
|
|
70286b3fd0 | ||
|
|
7de0753b2c | ||
|
|
d5381019c9 | ||
|
|
7898fb4ae3 | ||
|
|
b63f92fc20 | ||
|
|
d0530877c2 | ||
|
|
08b88eba73 | ||
|
|
cc762f3c00 | ||
|
|
634de8c788 | ||
|
|
94c2c6ca7d | ||
|
|
ae57423eab | ||
|
|
46c699143a | ||
|
|
a74c9be2e6 | ||
|
|
c4b4a6850d | ||
|
|
bd9f1a74a4 | ||
|
|
c5abd526d6 | ||
|
|
e4f100055c | ||
|
|
1864509cbb | ||
|
|
05c95dbfef | ||
|
|
79ec7d8bc0 | ||
|
|
7e84bd1aaf | ||
|
|
cb59525ca4 | ||
|
|
9f05e5e10f | ||
|
|
fc9b182e55 | ||
|
|
bd94d695be | ||
|
|
b7fb6c6117 | ||
|
|
b7479df01b | ||
|
|
6cd9e965a1 | ||
|
|
3fc397c9f2 | ||
|
|
2f407de0d4 | ||
|
|
54636e1843 | ||
|
|
989de209d0 | ||
|
|
85f6bd6826 | ||
|
|
0347f05f9b | ||
|
|
8902169320 | ||
|
|
31dd8b0f8c | ||
|
|
4336e50d54 | ||
|
|
95b2f5a951 | ||
|
|
cb4893c36b | ||
|
|
5551ecf6cd | ||
|
|
521d7877b4 | ||
|
|
178678c216 | ||
|
|
ce801ee218 | ||
|
|
8e1506a454 | ||
|
|
b04c7393f2 | ||
|
|
15c3827ca9 | ||
|
|
b04d930f77 | ||
|
|
fc4a89b678 | ||
|
|
587598c8a9 | ||
|
|
d70701361f | ||
|
|
1f71dd9e6e | ||
|
|
969dc789df | ||
|
|
7108d8cd7f | ||
|
|
e8e6836ab8 | ||
|
|
9b5234bd5f | ||
|
|
23c5e1040a | ||
|
|
26fc43f6cb | ||
|
|
f4c4dbe55d | ||
|
|
f069f19185 | ||
|
|
e424e554d7 | ||
|
|
bd424f3a08 | ||
|
|
681a488ade | ||
|
|
a0599f7c2d | ||
|
|
793b06ce33 | ||
|
|
06f8870796 | ||
|
|
126c8b4e11 | ||
|
|
e4fd5ad70f | ||
|
|
44fed77ac4 | ||
|
|
ceda682290 | ||
|
|
3e05717180 | ||
|
|
590630b839 | ||
|
|
6d412139ef | ||
|
|
48cdb1e390 | ||
|
|
717439cafa | ||
|
|
03a6bb7902 | ||
|
|
f8f18eb6f5 | ||
|
|
d2dcf4a877 | ||
|
|
397f37cbb7 | ||
|
|
35f35458c7 | ||
|
|
82b84d760c | ||
|
|
10becbb998 | ||
|
|
1c587edff5 | ||
|
|
9d3049de00 | ||
|
|
5ebc0c0b0d | ||
|
|
4591209759 | ||
|
|
a747f91b39 | ||
|
|
1ab90bcef4 | ||
|
|
a7690e395b | ||
|
|
1a592f4d51 | ||
|
|
c4c03da77f | ||
|
|
5663cd87c1 | ||
|
|
fe921e0c2f | ||
|
|
63fb6625b3 | ||
|
|
410133bf68 | ||
|
|
609aa4558f | ||
|
|
97c7ad63b6 | ||
|
|
a6d23971cd | ||
|
|
17b6a013b8 | ||
|
|
f86839eb7b | ||
|
|
2c00f28b50 | ||
|
|
ce5b65b4df | ||
|
|
3ae058dc63 | ||
|
|
4a2604b52c | ||
|
|
8add407715 | ||
|
|
c300d2b99a | ||
|
|
8287db900c | ||
|
|
7e0ce073fb | ||
|
|
b6b39c9dad | ||
|
|
71b58e7724 | ||
|
|
d874ec5b48 | ||
|
|
5cebb48bc6 | ||
|
|
c6623a277a | ||
|
|
fee05d3764 | ||
|
|
5a818eb8cd | ||
|
|
f25626ee84 | ||
|
|
4baf7ece46 | ||
|
|
6a90caaf8f | ||
|
|
c58d3d64f3 | ||
|
|
bb343cb8e4 | ||
|
|
d07b8f1e01 | ||
|
|
dd15dacb18 | ||
|
|
e7d3d2f4da | ||
|
|
60ac1dbfe6 | ||
|
|
17b360bc18 | ||
|
|
f1ac8b853b | ||
|
|
e1e907bad7 | ||
|
|
c4b86f5ee9 | ||
|
|
1528568bb8 | ||
|
|
0b78387d7f | ||
|
|
aaa57d3008 | ||
|
|
f9fe704ccb | ||
|
|
8b5ae91547 | ||
|
|
8e40a0eb64 | ||
|
|
4f722f2807 | ||
|
|
73fd1a8d99 | ||
|
|
82112f5678 | ||
|
|
7eceefb0f2 | ||
|
|
40c99a8c13 | ||
|
|
1e68d47927 | ||
|
|
92fc35861f | ||
|
|
7d7e9f154b | ||
|
|
b34d8b931e | ||
|
|
61432a3070 | ||
|
|
23fa36bc23 | ||
|
|
cb63c2b1ea | ||
|
|
b2620caf26 | ||
|
|
5a8d169ba1 | ||
|
|
d49404ad2d | ||
|
|
2dcb56a41d | ||
|
|
7025491846 | ||
|
|
62afe724ed | ||
|
|
8fb2e0ba3b | ||
|
|
6412231f29 | ||
|
|
685272fce8 | ||
|
|
859d6427fd | ||
|
|
65fb2d280f | ||
|
|
5d0bc98f8d | ||
|
|
227cae5762 | ||
|
|
65b7008378 | ||
|
|
2f49e6024d | ||
|
|
b1023fac1d | ||
|
|
cfc352ea0d | ||
|
|
a27f294f74 | ||
|
|
e44e613ff2 | ||
|
|
38a5ad3c68 | ||
|
|
ce827fe733 | ||
|
|
1928da0557 | ||
|
|
9c593a2757 | ||
|
|
0fb47c499f | ||
|
|
5bf84f3b62 | ||
|
|
7151a98f41 | ||
|
|
21d2ca34f6 | ||
|
|
5778fb6cbc | ||
|
|
1ad25fbc9c | ||
|
|
8a6b602836 | ||
|
|
ef3bb2e368 | ||
|
|
376f7c1304 | ||
|
|
1238f31178 | ||
|
|
f186ec93dd | ||
|
|
2ba078277f | ||
|
|
89439ce79e | ||
|
|
19e18b9efb | ||
|
|
113cbd0e9e | ||
|
|
6db21f54c1 | ||
|
|
a4d1bae083 | ||
|
|
7c505f917a | ||
|
|
e521d75e7a | ||
|
|
221fd81bb2 | ||
|
|
068d049a9f | ||
|
|
90a50d999d | ||
|
|
12ae140185 | ||
|
|
f839fd93b7 | ||
|
|
cd59df5011 | ||
|
|
11df912058 | ||
|
|
4e0abf8775 | ||
|
|
a0e6cc3996 | ||
|
|
5361934469 | ||
|
|
6e00fd349c | ||
|
|
3778e47bdc | ||
|
|
53a86f30cc | ||
|
|
e63fa44fff | ||
|
|
f4a47e30c7 | ||
|
|
1941c8b729 | ||
|
|
8b916d15f4 | ||
|
|
4ef15728a0 | ||
|
|
bfbb98fc1f | ||
|
|
5cc56ab353 | ||
|
|
1b0536dca0 | ||
|
|
0d13c26307 | ||
|
|
cd2df5d894 | ||
|
|
d87383be69 | ||
|
|
d851d03925 | ||
|
|
d092c329da | ||
|
|
4345398ca2 | ||
|
|
d2cf6821b8 | ||
|
|
3db70a3ad0 | ||
|
|
362db04ff6 | ||
|
|
ea7cca3d40 | ||
|
|
f35eea1634 | ||
|
|
2c5f9e6c0c | ||
|
|
066339d8cb | ||
|
|
d9ab53bbf0 | ||
|
|
561c041010 | ||
|
|
fbe3e3685f | ||
|
|
2f43079fc6 | ||
|
|
0bdbee24cf | ||
|
|
081f8c8808 | ||
|
|
a9dd6be8e8 | ||
|
|
a25de7b287 | ||
|
|
46b403c43d | ||
|
|
b060ea1714 | ||
|
|
f627565696 | ||
|
|
badc1f2da3 | ||
|
|
10cda2cfd7 | ||
|
|
abdcbe7b7a | ||
|
|
377f725f26 | ||
|
|
ff31858a81 | ||
|
|
9e27685cd0 | ||
|
|
c09483b540 | ||
|
|
44f0155f5a | ||
|
|
a0eb08a2fa | ||
|
|
8c289c6d6e | ||
|
|
baf6af79d6 | ||
|
|
2d1983cfb0 | ||
|
|
5c4c4498d2 | ||
|
|
f72aa7a468 | ||
|
|
c8ec3702d0 | ||
|
|
4e33365bf4 | ||
|
|
fdae399c74 | ||
|
|
e367b00d2c | ||
|
|
b08c91190a | ||
|
|
52080092b6 | ||
|
|
88b5560a2a | ||
|
|
6d99061b17 | ||
|
|
f624adf540 | ||
|
|
67827d5ea4 | ||
|
|
20800c611b | ||
|
|
6c8d4328fb | ||
|
|
588a6ba012 | ||
|
|
d4dd8bb72d | ||
|
|
6d25211f3b | ||
|
|
4ae9673935 | ||
|
|
cd36e9a334 | ||
|
|
0897c36947 | ||
|
|
6989a8ae91 | ||
|
|
df1f35e92b | ||
|
|
6f5ec19388 | ||
|
|
6eb05495aa | ||
|
|
81a8b00d78 | ||
|
|
382c909ffc | ||
|
|
92ba86f1fd | ||
|
|
adcc473d6e | ||
|
|
5314bcb687 | ||
|
|
30e7beb84c | ||
|
|
e8071fa544 | ||
|
|
32b7183483 | ||
|
|
f6f1720fee | ||
|
|
6b8cdafbbd | ||
|
|
074b7b41e8 | ||
|
|
2223dfef0e | ||
|
|
7b046c75b2 | ||
|
|
3bf6326763 | ||
|
|
c2d962d4d1 | ||
|
|
34270825a7 | ||
|
|
d971a9c9ae | ||
|
|
d40ba2a67c | ||
|
|
7b1949da6c | ||
|
|
2a3fe018e8 | ||
|
|
36985520f9 | ||
|
|
cca9f6d521 | ||
|
|
da1a50e9d3 | ||
|
|
c460386d39 | ||
|
|
1c64000431 | ||
|
|
1df4fc9a41 | ||
|
|
ae6f1001f8 | ||
|
|
4bce6df238 | ||
|
|
bb806e492e | ||
|
|
c3ffd52771 | ||
|
|
ec91b9e8da | ||
|
|
cd8f29aa59 | ||
|
|
bb74b173ca | ||
|
|
10b23bb64e | ||
|
|
ea253016fc | ||
|
|
a020b587c1 | ||
|
|
0eb9ae4792 | ||
|
|
f275617225 | ||
|
|
92ecad5118 | ||
|
|
d486e84816 | ||
|
|
b287a3b022 | ||
|
|
83a21c5840 | ||
|
|
b9f4dcf4ea | ||
|
|
a20c96bc21 | ||
|
|
291a5ce514 | ||
|
|
cdbc8d1ab0 | ||
|
|
689c3b95e7 | ||
|
|
b8a37b0ea1 | ||
|
|
86908cdbe9 | ||
|
|
0f08c2a624 | ||
|
|
47bad3794e | ||
|
|
fb566fd94c | ||
|
|
3bbbd1b5b1 | ||
|
|
172266b0c5 | ||
|
|
1f14b132c2 | ||
|
|
3613b27ca7 | ||
|
|
4672ee559f | ||
|
|
02773eff40 | ||
|
|
5d6e63c20e | ||
|
|
ee4dd7732e | ||
|
|
8d343221d2 | ||
|
|
7c20ac5c64 | ||
|
|
dac66d0b80 | ||
|
|
4245502ae2 |
70
.gitignore
vendored
Normal file
70
.gitignore
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
# compiler output
|
||||
*.o
|
||||
*.lo
|
||||
*.a
|
||||
*.la
|
||||
*.conf
|
||||
.deps
|
||||
.dirstamp
|
||||
.libs
|
||||
|
||||
# generated files
|
||||
lib/freeDiameter-*/build-aux/*
|
||||
lib/freeDiameter-*/config.status
|
||||
lib/freeDiameter-*/m4/*.m4
|
||||
lib/freeDiameter-*/!m4/ax_*.m4
|
||||
lib/freeDiameter-*/libfdcore/fdd.tab.[chy]
|
||||
lib/freeDiameter-*/libfdcore/lex.fdd.[cl]
|
||||
lib/freeDiameter-*/include/freeDiameter/version.h
|
||||
lib/freeDiameter-*/include/freeDiameter/config.h.in*
|
||||
lib/freeDiameter-*/include/freeDiameter/config.h
|
||||
lib/freeDiameter-*/include/freeDiameter/freeDiameter-host.h
|
||||
support/systemd/nextepc-*.service
|
||||
support/logrotate/nextepc
|
||||
|
||||
# autotools
|
||||
stamp-h1
|
||||
config.h
|
||||
lib/base/nextepc-config.h
|
||||
lib/base/nextepc-config.h.in*
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
aclocal.m4
|
||||
libtool
|
||||
autom4te.cache
|
||||
build/*
|
||||
!build/git-version-gen
|
||||
!build/osc-upload.sh
|
||||
!build/dput-upload.sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
m4/*.m4
|
||||
!m4/ax_*.m4
|
||||
|
||||
.tarball-version
|
||||
.version
|
||||
|
||||
# autotest
|
||||
tests/package.m4
|
||||
tests/atconfig
|
||||
tests/testsuite
|
||||
tests/testsuite.dir/
|
||||
tests/testsuite.log
|
||||
|
||||
# executables
|
||||
tests/testunit
|
||||
tests/testsimple
|
||||
tests/testcomplex
|
||||
tests/testvolte
|
||||
tests/testcsfb
|
||||
nextepc-mmed
|
||||
nextepc-pcrfd
|
||||
nextepc-pgwd
|
||||
nextepc-sgwd
|
||||
nextepc-epcd
|
||||
nextepc-hssd
|
||||
|
||||
# webui
|
||||
webui/.next/
|
||||
webui/node_modules/
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "lib/ogslib"]
|
||||
path = lib/ogslib
|
||||
url = https://github.com/open5gs/ogslib
|
||||
145
LICENSE
145
LICENSE
@@ -1,5 +1,5 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
@@ -7,17 +7,15 @@
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
@@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
@@ -72,7 +60,7 @@ modification follow.
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
@@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
@@ -631,44 +629,33 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{one line to give the program's name and a brief idea of what it does.}
|
||||
Copyright (C) {year} {name of author}
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
{project} Copyright (C) {year} {fullname}
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
103
Makefile.am
103
Makefile.am
@@ -1,71 +1,62 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
# This file is part of Open5GS.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
EXTRA_DIST = build/git-version-gen .version README.md LICENSE
|
||||
|
||||
SUBDIRS = lib src test
|
||||
SUBDIRS = lib src support tests
|
||||
|
||||
bin_PROGRAMS = mmed hssd sgwd pgwd pcrfd epcd
|
||||
bin_PROGRAMS = nextepc-mmed nextepc-hssd nextepc-sgwd nextepc-pgwd nextepc-pcrfd nextepc-epcd
|
||||
|
||||
dist_mmed_SOURCES = main.c
|
||||
mmed_LDADD = $(top_srcdir)/src/libmme.la
|
||||
mmed_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_mmed_SOURCES = main.c
|
||||
nextepc_mmed_LDADD = $(top_srcdir)/src/libmme.la
|
||||
|
||||
dist_hssd_SOURCES = main.c
|
||||
hssd_LDADD = $(top_srcdir)/src/libhss.la
|
||||
hssd_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_hssd_SOURCES = main.c
|
||||
nextepc_hssd_LDADD = $(top_srcdir)/src/libhss.la
|
||||
|
||||
dist_sgwd_SOURCES = main.c
|
||||
sgwd_LDADD = $(top_srcdir)/src/libsgw.la
|
||||
sgwd_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_sgwd_SOURCES = main.c
|
||||
nextepc_sgwd_LDADD = $(top_srcdir)/src/libsgw.la
|
||||
|
||||
dist_pgwd_SOURCES = main.c
|
||||
pgwd_LDADD = $(top_srcdir)/src/libpgw.la
|
||||
pgwd_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_pgwd_SOURCES = main.c
|
||||
nextepc_pgwd_LDADD = $(top_srcdir)/src/libpgw.la
|
||||
|
||||
dist_pcrfd_SOURCES = main.c
|
||||
pcrfd_LDADD = $(top_srcdir)/src/libpcrf.la
|
||||
pcrfd_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_pcrfd_SOURCES = main.c
|
||||
nextepc_pcrfd_LDADD = $(top_srcdir)/src/libpcrf.la
|
||||
|
||||
dist_epcd_SOURCES = main.c
|
||||
epcd_LDADD = $(top_srcdir)/src/libepc.la
|
||||
epcd_LDFLAGS = -export-dynamic
|
||||
dist_nextepc_epcd_SOURCES = main.c
|
||||
nextepc_epcd_LDADD = $(top_srcdir)/src/libepc.la
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/lib/core/include \
|
||||
-I$(top_srcdir)/src
|
||||
|
||||
sysconf_DATA = \
|
||||
support/nextepc.conf
|
||||
|
||||
freeDiameterdir = ${prefix}/etc/freeDiameter
|
||||
freeDiameter_DATA = \
|
||||
support/freeDiameter/mme.conf \
|
||||
support/freeDiameter/hss.conf \
|
||||
support/freeDiameter/pgw.conf \
|
||||
support/freeDiameter/pcrf.conf
|
||||
dist_freeDiameter_DATA = \
|
||||
support/freeDiameter/cacert.pem \
|
||||
support/freeDiameter/mme.key.pem \
|
||||
support/freeDiameter/mme.cert.pem \
|
||||
support/freeDiameter/hss.key.pem \
|
||||
support/freeDiameter/hss.cert.pem \
|
||||
support/freeDiameter/pgw.key.pem \
|
||||
support/freeDiameter/pgw.cert.pem \
|
||||
support/freeDiameter/pcrf.key.pem \
|
||||
support/freeDiameter/pcrf.cert.pem
|
||||
@OGSCORE_CFLAGS@ \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_srcdir)/src \
|
||||
$(NULL)
|
||||
|
||||
install-data-hook:
|
||||
$(MKDIR_P) $(prefix)/var/log
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/log/nextepc
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-mmed
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-sgwd
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-pgwd
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-pcrfd
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-hssd
|
||||
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-epcd
|
||||
|
||||
CLEANFILES = symtbl.c
|
||||
DISTCLEANFILES = $(DIST_ARCHIVES)
|
||||
MAINTAINERCLEANFILES = \
|
||||
configure config.in \
|
||||
aclocal.m4 m4/ltsugar.m4 m4/libtool.m4 m4/ltversion.m4 \
|
||||
m4/lt~obsolete.m4 m4/ltoptions.m4 \
|
||||
build-aux/ar-lib build-aux/config.guess build-aux/depcomp \
|
||||
build-aux/ltmain.sh build-aux/test-driver build-aux/compile \
|
||||
build-aux/config.sub build-aux/missing build-aux/install-sh \
|
||||
.cscope.out .cscope.out.in .cscope.files .cscope.out.po \
|
||||
Makefile.in
|
||||
MOSTLYCLEANFILES = core *.stackdump
|
||||
BUILT_SOURCES = $(top_srcdir)/.version
|
||||
$(top_srcdir)/.version:
|
||||
echo $(VERSION) > $@-t && mv $@-t $@
|
||||
dist-hook:
|
||||
echo $(VERSION) > $(distdir)/.tarball-version
|
||||
|
||||
267
README.md
267
README.md
@@ -1,267 +1,26 @@
|
||||
Building NextEPC
|
||||
================
|
||||
## Documentation
|
||||
|
||||
This post will guide you on how to get installed with **NextEPC**. To date, **NextEPC** has been compiled and tested on GNU/Linux distributions(Debian, Ubuntu, Fedora, OpenSUSE) and FreeBSD.
|
||||
If you don't understand something about NextEPC, the [https://open5gs.org/nextepc/docs/](https://open5gs.org/nextepc/docs/) is a great place to look for answers.
|
||||
|
||||
We will describe this guide using **Ubuntu 16.04 LTS (Xenial)**. You'll need to install **Ubuntu** if you don't have it installed already. To get the latest Ubuntu version, please visit the official Ubuntu website: [https://www.ubuntu.com/download/](https://www.ubuntu.com/download/).
|
||||
## Support
|
||||
|
||||
## Install the dependencies for building the source
|
||||
Problem with NextEPC can be filed as [issues](https://github.com/open5gs/nextepc/issues) in this repository.
|
||||
|
||||
The first step is to use **apt-get** to install all depedencies.
|
||||
Discussions related to this project are happening on the [nextepc@lists.osmocom.org](mailto:nextepc@lists.osmocom.org) mailing list, please see <https://lists.osmocom.org/mailman/listinfo/nextepc> for subscription options and the list archive.
|
||||
|
||||
```bash
|
||||
sudo apt-get -y install git gcc flex bison make autoconf libtool pkg-config libsctp-dev libssl-dev libgnutls-dev libgcrypt-dev libmongoc-dev libbson-dev mongodb
|
||||
```
|
||||
Voice and text chat available in NextEPC's [Discord](https://discordapp.com/) workspace. Use [this link](https://discord.gg/GreNkuc) to get started.
|
||||
|
||||
## Retrieve the latest version of the source package
|
||||
## Contributing
|
||||
|
||||
```bash
|
||||
git clone https://github.com/acetcom/nextepc
|
||||
```
|
||||
NextEPC is a pure/classic FOSS project, open to contributions from anyone.
|
||||
|
||||
## Configure the build
|
||||
[Pull requests](https://github.com/open5gs/nextepc/pulls) are always welcome, and I appreciates any help the community can give to help make NextEPC better.
|
||||
|
||||
```bash
|
||||
cd nextepc
|
||||
test -f configure || autoreconf -iv
|
||||
CFLAGS='-O2' ./configure --prefix=`pwd`/install
|
||||
```
|
||||
Do you want to be a committer? Please [send me an email](mailto:acetcom@gmail.com). You will be added as a committer to this project. However, if someone consistently causes difficulties with these source repositories due to poor behavior or other serious problems then commit access may be revoked.
|
||||
|
||||
## Compiling
|
||||
## License
|
||||
|
||||
Hopefully, once you have completed the autotools configuration, you only need to run:
|
||||
NextEPC source files are made available under the terms of the GNU Affero General Public License (GNU AGPLv3).
|
||||
|
||||
```bash
|
||||
make -j `nproc`
|
||||
```
|
||||
When you contribute code for NextEPC, the same license applies.
|
||||
|
||||
## Installing
|
||||
|
||||
Once the compilation is complete, you can install in the configured paths with:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
(this might require sudo depending on the configured target directories)
|
||||
|
||||
Web Setup
|
||||
=========
|
||||
|
||||
NextEPC is configured with **Mongo DB**, which manages _Subscriber Information_ mainly, and **Configuration File** made in _JSON_ format.
|
||||
|
||||
The configuration file can be modified using a general editor such as vi or emacs, but _Subscriber Information_ can be managed properly using _Mongo DB Client_.
|
||||
|
||||
NextEPC provides **Web User Interface** solely designed to manage _Subscriber Information_ in an easy way without using _Mongo DB Client_. Let's how to install it from now on.
|
||||
|
||||
## Install Node.js and NPM
|
||||
|
||||
To get the latest **Node.js** and **NPM** version, you can visit the official **Node.js** website:
|
||||
[https://nodesjs.org/en/download/](https://nodesjs.org/en/download/).
|
||||
|
||||
Or, you can install _Node.js_ and _NPM_ on **Ubuntu** as follows:
|
||||
|
||||
```bash
|
||||
sudo apt-get -y install curl
|
||||
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
|
||||
sudo apt-get -y install nodejs
|
||||
```
|
||||
|
||||
## Install the dependencies for building the source
|
||||
|
||||
The first step is to use **npm** to install all depedencies.
|
||||
|
||||
```bash
|
||||
cd nextepc/webui
|
||||
npm install
|
||||
```
|
||||
|
||||
## Build Web User Interface
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Running Web Server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Login with default account
|
||||
|
||||
Use **Web Browser** to connect it. _http://localhost:3000_
|
||||
|
||||
* Username : admin
|
||||
* Password : 1423
|
||||
|
||||
Then, you can change your password in _Account_ Menu.
|
||||
|
||||
Network Configuration
|
||||
=====================
|
||||
|
||||
NextEPC consists of five nodes such as _MME, SGW, PGW, HSS and PCRF_. Basically, each node can be installed in a physically separate host or in the same host.
|
||||
|
||||
We will run these five nodes that make up NextEPC in a **Single Host**. The reason is why it is the easiest way to understand how to configure NextEPC network.
|
||||
|
||||
## IP Configuration
|
||||
|
||||
In order to run _MME, HSS, SGW, PGW, and PCRF_ on a **Single Host**, IP address is set by using **IP aliasing**.
|
||||
|
||||
```bash
|
||||
sudo ifconfig eth1:hss 10.1.35.214/24 up
|
||||
sudo ifconfig eth1:mme 10.1.35.215/24 up
|
||||
sudo ifconfig eth1:sgw_s5 10.1.35.216/24 up
|
||||
sudo ifconfig eth1:sgw_s11 10.1.35.217/24 up
|
||||
sudo ifconfig eth1:pcrf 10.1.35.218/24 up
|
||||
sudo ifconfig eth1:pgw 10.1.35.219/24 up
|
||||
```
|
||||
|
||||
## Setup for Data Path
|
||||
|
||||
Use the **TUN Driver** to make _Data Path_ to be used by the **PGW**.
|
||||
|
||||
```bash
|
||||
sudo ip tuntap add name pgwtun mode tun
|
||||
sudo ifconfig pgwtun 45.45.0.1/16 up
|
||||
```
|
||||
|
||||
## Check Configuration File
|
||||
|
||||
A configuration file is located `etc/nextepc.conf` from the installed paths. If you need to change the IP address for a particular problem, you should modify `XXXX_IPV4` field in the configuration file.
|
||||
|
||||
For example, if you want the IP aliasing address of *PGW* to be _10.1.35.254_, `PGW.NETWORK.S5C_IPV4` and `PGW_NETWORK.S5U_IPV4` field should be updated like the followings.
|
||||
|
||||
<pre>
|
||||
PGW :
|
||||
{
|
||||
FD_CONF_PATH : "/etc/freeDiameter
|
||||
|
||||
NETWORK :
|
||||
{
|
||||
S5C_IPV4: "10.1.35.254",
|
||||
S5U_IPV4: "10.1.35.254"
|
||||
}
|
||||
|
||||
TUNNEL:
|
||||
{
|
||||
DEV_NAME: "pgwtun"
|
||||
}
|
||||
|
||||
IP_POOL :
|
||||
{
|
||||
CIDR: 45.45.45.0/24
|
||||
}
|
||||
|
||||
DNS :
|
||||
{
|
||||
PRIMARY_IPV4: "8.8.8.8",
|
||||
SECONDARY_IPV4: "4.4.4.4"
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
## Testing Network Configuration
|
||||
|
||||
Once you are done, run the testing script.
|
||||
```bash
|
||||
./test/testepc
|
||||
```
|
||||
You can see the simulated packet through **Wireshark**. _(FILTER : s1ap || gtpv2 || diameter)_
|
||||
|
||||
Running NextEPC
|
||||
===============
|
||||
|
||||
## Update GUMMEI and TAI
|
||||
|
||||
The followings are the **GUMMEI** and **TAI** of the *MME* currently set to Default. Your *eNodeB* will also have a **PLMN ID** and **TAC** set. Refer to these parameters to change the setting of MME or eNodeB.
|
||||
|
||||
<pre>
|
||||
GUMMEI:
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC : "001",
|
||||
MNC : "01"
|
||||
}
|
||||
MME_GID : 2,
|
||||
MME_CODE : 1
|
||||
},
|
||||
TAI:
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC: "001",
|
||||
MNC: "01",
|
||||
}
|
||||
TAC: 12345
|
||||
}
|
||||
</pre>
|
||||
|
||||
For reference, MME can set several GUMMEI and TAI as **JSON array notation** as follows.
|
||||
|
||||
<pre>
|
||||
GUMMEI:
|
||||
[
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC : "001",
|
||||
MNC : "01"
|
||||
}
|
||||
MME_GID : 2,
|
||||
MME_CODE : 1
|
||||
},
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC : "005",
|
||||
MNC : "05"
|
||||
}
|
||||
MME_GID : 5,
|
||||
MME_CODE : 6
|
||||
},
|
||||
]
|
||||
TAI:
|
||||
[
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC: "001",
|
||||
MNC: "01",
|
||||
}
|
||||
TAC: 12345
|
||||
},
|
||||
{
|
||||
PLMN_ID :
|
||||
{
|
||||
MCC: "005",
|
||||
MNC: "05",
|
||||
}
|
||||
TAC: 6789
|
||||
}
|
||||
]
|
||||
</pre>
|
||||
|
||||
## Register Subscriber Information
|
||||
|
||||
There is only one setting for this guide. The _Subscriber Information_ required for **HSS** should be registered in _Mongo DB_. Let's run the **Web User Interface** with `npm run start` as mentioned eariler.
|
||||
|
||||
Connect http://localhost:3000 using Web Browser.
|
||||
|
||||
* Go to Subscriber Menu
|
||||
* Click + Button to add Subscriber Information
|
||||
* Fill IMSI, Security(K, OP, AMF), APN in the Form
|
||||
* Click the `SAVE` Button
|
||||
|
||||
## Running NextEPC
|
||||
|
||||
Generally, to use NextEPC in several hosts, you must use an independent daemon called _mmed, sgwd, pgwd, hssd, and pcrfd_.
|
||||
|
||||
However, we are preparing a more convenient daemon named **epcd**. It enables to service all five nodes of NextEPC.
|
||||
|
||||
```bash
|
||||
./epcd
|
||||
```
|
||||
|
||||
Turn on your **eNodeB** and **Mobile**. Check Wireshark!
|
||||
|
||||
Hopefully, you can see the real packet for TAU/Service Request, Dedicated Bearer, Multiple APN, and S1/X2-Handover.
|
||||
|
||||
90
acinclude.m4
90
acinclude.m4
@@ -1,90 +0,0 @@
|
||||
dnl
|
||||
dnl CORE_SUBST(varname)
|
||||
dnl
|
||||
dnl Adds variable with it's value into Makefile, e.g.:
|
||||
dnl CC = gcc
|
||||
dnl
|
||||
AC_DEFUN([CORE_SUBST],[
|
||||
CORE_VAR_SUBST="$CORE_VAR_SUBST $1"
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl CORE_SUBST_OLD(varname)
|
||||
dnl
|
||||
dnl Same as CORE_SUBST() but also substitutes all @VARNAME@
|
||||
dnl instances in every file passed to AC_OUTPUT()
|
||||
dnl
|
||||
AC_DEFUN([CORE_SUBST_OLD],[
|
||||
CORE_SUBST($1)
|
||||
AC_SUBST($1)
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl CORE_CONFIG_NICE(filename)
|
||||
dnl
|
||||
dnl Generates the config.nice file
|
||||
dnl
|
||||
AC_DEFUN([CORE_CONFIG_NICE],[
|
||||
AC_REQUIRE([AC_PROG_EGREP])
|
||||
AC_REQUIRE([LT_AC_PROG_SED])
|
||||
CORE_SUBST_OLD(EGREP)
|
||||
CORE_SUBST_OLD(SED)
|
||||
test -f $1 && mv $1 $1.old
|
||||
rm -f $1.old
|
||||
cat >$1<<EOF
|
||||
#! /bin/sh
|
||||
#
|
||||
# Created by configure
|
||||
|
||||
EOF
|
||||
|
||||
for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS EXTRA_LDFLAGS_PROGRAM LIBS CC CXX; do
|
||||
eval val=\$$var
|
||||
if test -n "$val"; then
|
||||
echo "$var='$val' \\" >> $1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "'[$]0' \\" >> $1
|
||||
if test `expr -- [$]0 : "'.*"` = 0; then
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'"
|
||||
else
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0"
|
||||
fi
|
||||
for arg in $ac_configure_args; do
|
||||
if test `expr -- $arg : "'.*"` = 0; then
|
||||
if test `expr -- $arg : "--.*"` = 0; then
|
||||
break;
|
||||
fi
|
||||
echo "'[$]arg' \\" >> $1
|
||||
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '[$]arg'"
|
||||
else
|
||||
if test `expr -- $arg : "'--.*"` = 0; then
|
||||
break;
|
||||
fi
|
||||
echo "[$]arg \\" >> $1
|
||||
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS [$]arg"
|
||||
fi
|
||||
done
|
||||
echo '"[$]@"' >> $1
|
||||
chmod +x $1
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS"
|
||||
CORE_SUBST_OLD(CONFIGURE_COMMAND)
|
||||
CORE_SUBST_OLD(CONFIGURE_OPTIONS)
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
69
build/dput-upload.sh
Executable file
69
build/dput-upload.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" = "-h" ]; then
|
||||
echo "Usage: ./build/dput-upload.sh [PROJECT]"
|
||||
echo ""
|
||||
echo " PROJECT: snapshot(=Default), release"
|
||||
echo ""
|
||||
echo " This script is used to upload a source package to OBS(OpenSUSE Build Service)."
|
||||
echo ""
|
||||
echo " This script must be called from the base directory of the repository, and"
|
||||
echo " requires utilites from these packages: git-buildpackage dput git"
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -x /usr/bin/dpkg-parsechangelog ]; then
|
||||
echo "Missing the dpkg-parsechangelog utility from the dpkg-dev package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f debian/changelog ]; then
|
||||
echo "This script must be called from the base directory of the package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d .git ]; then
|
||||
echo "This script only works from within a repository"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x /usr/bin/gbp ]; then
|
||||
echo "Missing git-buildpackage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PACKAGE=$(dpkg-parsechangelog | sed -n 's/^Source: //p')
|
||||
DT="$(date +%Y%m%d)+git$(git rev-parse --short HEAD)"
|
||||
TOP=$(pwd)
|
||||
|
||||
PROJECT=ppa:open5gs/${1-snapshot}
|
||||
|
||||
DEB_SRC=$TOP/build/deb-src
|
||||
DEB_DIR=$DEB_SRC/$PACKAGE
|
||||
|
||||
build_package() {
|
||||
if [ ! -d $DEB_DIR ]; then
|
||||
mkdir -p $DEB_DIR
|
||||
fi
|
||||
|
||||
./build/git-version-gen . > .tarball-version 2>/dev/null
|
||||
gbp buildpackage -S -d \
|
||||
--git-ignore-branch --git-ignore-new "--git-export-dir=$DEB_DIR" \
|
||||
--git-postexport='cp $GBP_GIT_DIR/../.tarball-version $GBP_TMP_DIR/'
|
||||
rm -f .tarball-version
|
||||
|
||||
cd $DEB_DIR
|
||||
dput $PROJECT *_source.changes
|
||||
|
||||
rm "$DEB_DIR/"*
|
||||
rmdir "$DEB_DIR/"
|
||||
rmdir "$DEB_SRC/"
|
||||
|
||||
cd $TOP
|
||||
}
|
||||
|
||||
build_package
|
||||
echo "${1-snapshot} versions of $DT"
|
||||
227
build/git-version-gen
Executable file
227
build/git-version-gen
Executable file
@@ -0,0 +1,227 @@
|
||||
#!/bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2017-09-13.06; # UTC
|
||||
|
||||
# Copyright (C) 2007-2017 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/.
|
||||
# It may be run two ways:
|
||||
# - from a git repository in which the "git describe" command below
|
||||
# produces useful output (thus requiring at least one signed tag)
|
||||
# - from a non-git-repo directory containing a .tarball-version file, which
|
||||
# presumes this script is invoked like "./git-version-gen .tarball-version".
|
||||
|
||||
# In order to use intra-version strings in your project, you will need two
|
||||
# separate generated version string files:
|
||||
#
|
||||
# .tarball-version - present only in a distribution tarball, and not in
|
||||
# a checked-out repository. Created with contents that were learned at
|
||||
# the last time autoconf was run, and used by git-version-gen. Must not
|
||||
# be present in either $(srcdir) or $(builddir) for git-version-gen to
|
||||
# give accurate answers during normal development with a checked out tree,
|
||||
# but must be present in a tarball when there is no version control system.
|
||||
# Therefore, it cannot be used in any dependencies. GNUmakefile has
|
||||
# hooks to force a reconfigure at distribution time to get the value
|
||||
# correct, without penalizing normal development with extra reconfigures.
|
||||
#
|
||||
# .version - present in a checked-out repository and in a distribution
|
||||
# tarball. Usable in dependencies, particularly for files that don't
|
||||
# want to depend on config.h but do want to track version changes.
|
||||
# Delete this file prior to any autoconf run where you want to rebuild
|
||||
# files to pick up a version string change; and leave it stale to
|
||||
# minimize rebuild time after unrelated changes to configure sources.
|
||||
#
|
||||
# As with any generated file in a VC'd directory, you should add
|
||||
# /.version to .gitignore, so that you don't accidentally commit it.
|
||||
# .tarball-version is never generated in a VC'd directory, so needn't
|
||||
# be listed there.
|
||||
#
|
||||
# Use the following line in your configure.ac, so that $(VERSION) will
|
||||
# automatically be up-to-date each time configure is run (and note that
|
||||
# since configure.ac no longer includes a version string, Makefile rules
|
||||
# should not depend on configure.ac for version updates).
|
||||
#
|
||||
# AC_INIT([GNU project],
|
||||
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
|
||||
# [bug-project@example])
|
||||
#
|
||||
# Then use the following lines in your Makefile.am, so that .version
|
||||
# will be present for dependencies, and so that .version and
|
||||
# .tarball-version will exist in distribution tarballs.
|
||||
#
|
||||
# EXTRA_DIST = $(top_srcdir)/.version
|
||||
# BUILT_SOURCES = $(top_srcdir)/.version
|
||||
# $(top_srcdir)/.version:
|
||||
# echo $(VERSION) > $@-t && mv $@-t $@
|
||||
# dist-hook:
|
||||
# echo $(VERSION) > $(distdir)/.tarball-version
|
||||
|
||||
|
||||
me=$0
|
||||
|
||||
version="git-version-gen $scriptversion
|
||||
|
||||
Copyright 2011 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING."
|
||||
|
||||
usage="\
|
||||
Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
|
||||
Print a version string.
|
||||
|
||||
Options:
|
||||
|
||||
--prefix PREFIX prefix of git tags (default 'v')
|
||||
--fallback VERSION
|
||||
fallback version to use if \"git --version\" fails
|
||||
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
|
||||
Running without arguments will suffice in most cases."
|
||||
|
||||
prefix=v
|
||||
fallback=
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
--help) echo "$usage"; exit 0;;
|
||||
--version) echo "$version"; exit 0;;
|
||||
--prefix) shift; prefix=${1?};;
|
||||
--fallback) shift; fallback=${1?};;
|
||||
-*)
|
||||
echo "$0: Unknown option '$1'." >&2
|
||||
echo "$0: Try '--help' for more information." >&2
|
||||
exit 1;;
|
||||
*)
|
||||
if test "x$tarball_version_file" = x; then
|
||||
tarball_version_file="$1"
|
||||
elif test "x$tag_sed_script" = x; then
|
||||
tag_sed_script="$1"
|
||||
else
|
||||
echo "$0: extra non-option argument '$1'." >&2
|
||||
exit 1
|
||||
fi;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test "x$tarball_version_file" = x; then
|
||||
echo "$usage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tag_sed_script="${tag_sed_script:-s/x/x/}"
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# Avoid meddling by environment variable of the same name.
|
||||
v=
|
||||
v_from_git=
|
||||
|
||||
# First see if there is a tarball-only version file.
|
||||
# then try "git describe", then default.
|
||||
if test -f $tarball_version_file
|
||||
then
|
||||
v=`cat $tarball_version_file` || v=
|
||||
case $v in
|
||||
*$nl*) v= ;; # reject multi-line output
|
||||
[0-9]*) ;;
|
||||
*) v= ;;
|
||||
esac
|
||||
test "x$v" = x \
|
||||
&& echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
|
||||
fi
|
||||
|
||||
if test "x$v" != x
|
||||
then
|
||||
: # use $v
|
||||
# Otherwise, if there is at least one git commit involving the working
|
||||
# directory, and "git describe" output looks sensible, use that to
|
||||
# derive a version string.
|
||||
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
|
||||
&& v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
|
||||
|| git describe --abbrev=4 HEAD 2>/dev/null` \
|
||||
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
|
||||
&& case $v in
|
||||
$prefix[0-9]*) ;;
|
||||
*) (exit 1) ;;
|
||||
esac
|
||||
then
|
||||
# Is this a new git that lists number of commits since the last
|
||||
# tag or the previous older version that did not?
|
||||
# Newer: v6.10-77-g0f8faeb
|
||||
# Older: v6.10-g0f8faeb
|
||||
vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v
|
||||
case $vprefix in
|
||||
*-*) : git describe is probably okay three part flavor ;;
|
||||
*)
|
||||
: git describe is older two part flavor
|
||||
# Recreate the number of commits and rewrite such that the
|
||||
# result is the same as if we were using the newer version
|
||||
# of git describe.
|
||||
vtag=`echo "$v" | sed 's/-.*//'`
|
||||
commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
|
||||
|| { commit_list=failed;
|
||||
echo "$0: WARNING: git rev-list failed" 1>&2; }
|
||||
numcommits=`echo "$commit_list" | wc -l`
|
||||
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
|
||||
test "$commit_list" = failed && v=UNKNOWN
|
||||
;;
|
||||
esac
|
||||
|
||||
# Change the penultimate "-" to ".", for version-comparing tools.
|
||||
# Remove the "g" to save a byte.
|
||||
v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`;
|
||||
v_from_git=1
|
||||
elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
|
||||
v=UNKNOWN
|
||||
else
|
||||
v=$fallback
|
||||
fi
|
||||
|
||||
v=`echo "$v" |sed "s/^$prefix//"`
|
||||
|
||||
# Test whether to append the "-dirty" suffix only if the version
|
||||
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
|
||||
# or if it came from .tarball-version.
|
||||
if test "x$v_from_git" != x; then
|
||||
# Don't declare a version "dirty" merely because a timestamp has changed.
|
||||
git update-index --refresh > /dev/null 2>&1
|
||||
|
||||
dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
|
||||
case "$dirty" in
|
||||
'') ;;
|
||||
*) # Append the suffix only if there isn't one already.
|
||||
case $v in
|
||||
*-dirty) ;;
|
||||
*) v="$v-dirty" ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
|
||||
printf %s "$v"
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
91
build/osc-upload.sh
Executable file
91
build/osc-upload.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/sh
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" = "-h" ]; then
|
||||
echo "Usage: ./build/osc-upload.sh [PROJECT]"
|
||||
echo ""
|
||||
echo " PROJECT: snapshot(=Default), release"
|
||||
echo ""
|
||||
echo " This script is used to upload a source package to OBS(OpenSUSE Build Service)."
|
||||
echo ""
|
||||
echo " This script must be called from the base directory of the repository, and"
|
||||
echo " requires utilites from these packages: git-buildpackage osc git"
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -x /usr/bin/dpkg-parsechangelog ]; then
|
||||
echo "Missing the dpkg-parsechangelog utility from the dpkg-dev package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f debian/changelog ]; then
|
||||
echo "This script must be called from the base directory of the package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d .git ]; then
|
||||
echo "This script only works from within a repository"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x /usr/bin/gbp ]; then
|
||||
echo "Missing git-buildpackage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PACKAGE=$(dpkg-parsechangelog | sed -n 's/^Source: //p')
|
||||
DT="$(date +%Y%m%d)+git$(git rev-parse --short HEAD)"
|
||||
TOP=$(pwd)
|
||||
|
||||
OGS_REPO=$TOP/build/obs-repo
|
||||
PROJECT=home:acetcom:open5gs:${1-snapshot}
|
||||
OBS_DIR=$OGS_REPO/$PROJECT/$PACKAGE
|
||||
|
||||
prepare() {
|
||||
if [ -d $OBS_DIR ]; then
|
||||
(cd $OBS_DIR && osc up)
|
||||
else
|
||||
mkdir -p $OGS_REPO
|
||||
(cd $OGS_REPO && osc co $PROJECT $PACKAGE)
|
||||
fi
|
||||
}
|
||||
|
||||
DEB_SRC=$TOP/build/deb-src
|
||||
DEB_DIR=$DEB_SRC/$PACKAGE
|
||||
|
||||
build_package() {
|
||||
if [ ! -d $DEB_DIR ]; then
|
||||
mkdir -p $DEB_DIR
|
||||
fi
|
||||
|
||||
./build/git-version-gen . > .tarball-version 2>/dev/null
|
||||
gbp buildpackage -S --no-sign -d \
|
||||
--git-ignore-branch --git-ignore-new "--git-export-dir=$DEB_DIR" \
|
||||
--git-postexport='cp $GBP_GIT_DIR/../.tarball-version $GBP_TMP_DIR/'
|
||||
rm -f .tarball-version
|
||||
|
||||
cd $OBS_DIR
|
||||
|
||||
file=$(cd "$DEB_DIR/" ; ls ./*.dsc)
|
||||
echo $file
|
||||
if [ -e "$file" ] ; then
|
||||
osc rm ./* || true
|
||||
fi
|
||||
|
||||
mv "$DEB_DIR/"*.dsc .
|
||||
mv "$DEB_DIR/"*.tar* .
|
||||
osc add ./*
|
||||
|
||||
rm "$DEB_DIR/"*
|
||||
rmdir "$DEB_DIR/"
|
||||
rmdir "$DEB_SRC/"
|
||||
|
||||
cd $TOP
|
||||
}
|
||||
|
||||
prepare
|
||||
build_package
|
||||
|
||||
(cd $OBS_DIR && osc ci -m "Snapshot versions of $DT")
|
||||
431
configure.ac
431
configure.ac
@@ -1,46 +1,53 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl
|
||||
dnl This file is free software; as a special exception the author gives
|
||||
dnl unlimited permission to copy and/or distribute it, with or without
|
||||
dnl modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This program is distributed in the hope that it will be useful, but
|
||||
dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([NEXTEPC], [0.1.0], [acetcom@gmail.com])
|
||||
# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
CORE_CONFIG_NICE(config.nice)
|
||||
# This file is part of Open5GS.
|
||||
|
||||
dnl Must come before AM_INIT_AUTOMAKE.
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign])
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Minimum Autoconf version required.
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([NextEPC],
|
||||
m4_esyscmd([build/git-version-gen .tarball-version]),
|
||||
[acetcom@gmail.com])
|
||||
|
||||
# Where to generate output; srcdir location.
|
||||
AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
|
||||
AC_CONFIG_SRCDIR([main.c])
|
||||
AC_CONFIG_AUX_DIR([build])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_TESTDIR(tests)
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
AC_CONFIG_HEADERS([lib/base/nextepc-config.h])
|
||||
AC_CONFIG_SRCDIR([main.c])
|
||||
|
||||
LO_DEV="lo0"
|
||||
case $host in
|
||||
*linux*)
|
||||
OSDIR="unix"
|
||||
OSCPPFLAGS="-DLINUX=1"
|
||||
IPFW_CPPFLAGS="-DNEED_SYSCTLBYNAME -DNEED_SIN_LEN"
|
||||
LO_DEV="lo"
|
||||
;;
|
||||
*-apple-darwin*)
|
||||
OSDIR="unix"
|
||||
OSPPCFLAGS="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK"
|
||||
OSCPPFLAGS="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK"
|
||||
;;
|
||||
*)
|
||||
OSDIR="unix"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(OSCPPFLAGS)
|
||||
AC_SUBST(OSDIR)
|
||||
AC_SUBST(IPFW_CPPFLAGS)
|
||||
AC_SUBST(LO_DEV)
|
||||
|
||||
AH_TOP([
|
||||
#ifndef __NEXTEPC_CONFIG_H__
|
||||
@@ -64,247 +71,100 @@ AH_VERBATIM([_REENTRANT],
|
||||
])
|
||||
|
||||
dnl Checks CC and freinds
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_MKDIR_P
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_SED
|
||||
#AC_PROG_YACC
|
||||
#AC_PROG_LEX
|
||||
AM_PROG_AR
|
||||
|
||||
dnl libtool
|
||||
LT_INIT
|
||||
|
||||
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
||||
if test "x$PKG_CONFIG" = "xno"; then
|
||||
AC_MSG_ERROR([You need to install pkg-config])
|
||||
fi
|
||||
PKG_PROG_PKG_CONFIG([0.20])
|
||||
|
||||
dnl Checks for compile flag
|
||||
AX_CHECK_COMPILE_FLAG([-Wno-unused-result], [CFLAGS="$CFLAGS -Wno-unused-result"])
|
||||
|
||||
dnl Checks for pointer size
|
||||
AC_CHECK_SIZEOF(void*, 4)
|
||||
|
||||
dnl Checks for integer size
|
||||
AC_CHECK_SIZEOF(char, 1)
|
||||
AC_CHECK_SIZEOF(int, 4)
|
||||
AC_CHECK_SIZEOF(long, 4)
|
||||
AC_CHECK_SIZEOF(short, 2)
|
||||
AC_CHECK_SIZEOF(long long, 8)
|
||||
|
||||
if test "$ac_cv_sizeof_short" = "2"; then
|
||||
short_value=short
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = "4"; then
|
||||
int_value=int
|
||||
fi
|
||||
# Now we need to find what c_int64_t (sizeof == 8) will be.
|
||||
# The first match is our preference.
|
||||
if test "$ac_cv_sizeof_int" = "8"; then
|
||||
int64_literal='#define C_INT64_C(val) (val)'
|
||||
uint64_literal='#define C_UINT64_C(val) (val##U)'
|
||||
int64_t_fmt='#define C_INT64_T_FMT "d"'
|
||||
uint64_t_fmt='#define C_UINT64_T_FMT "u"'
|
||||
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "x"'
|
||||
int64_value="int"
|
||||
long_value=int
|
||||
int64_strfn="strtoi"
|
||||
elif test "$ac_cv_sizeof_long" = "8"; then
|
||||
int64_literal='#define C_INT64_C(val) (val##L)'
|
||||
uint64_literal='#define C_UINT64_C(val) (val##UL)'
|
||||
int64_t_fmt='#define C_INT64_T_FMT "ld"'
|
||||
uint64_t_fmt='#define C_UINT64_T_FMT "lu"'
|
||||
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "lx"'
|
||||
int64_value="long"
|
||||
long_value=long
|
||||
int64_strfn="strtol"
|
||||
elif test "$ac_cv_sizeof_long_long" = "8"; then
|
||||
int64_literal='#define C_INT64_C(val) (val##LL)'
|
||||
uint64_literal='#define C_UINT64_C(val) (val##ULL)'
|
||||
# Linux, Solaris, FreeBSD all support ll with printf.
|
||||
# BSD 4.4 originated 'q'. Solaris is more popular and
|
||||
# doesn't support 'q'. Solaris wins. Exceptions can
|
||||
# go to the OS-dependent section.
|
||||
int64_t_fmt='#define C_INT64_T_FMT "lld"'
|
||||
uint64_t_fmt='#define C_UINT64_T_FMT "llu"'
|
||||
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "llx"'
|
||||
int64_value="long long"
|
||||
long_value="long long"
|
||||
int64_strfn="strtoll"
|
||||
elif test "$ac_cv_sizeof_longlong" = "8"; then
|
||||
int64_literal='#define C_INT64_C(val) (val##LL)'
|
||||
uint64_literal='#define C_UINT64_C(val) (val##ULL)'
|
||||
int64_t_fmt='#define C_INT64_T_FMT "qd"'
|
||||
uint64_t_fmt='#define C_UINT64_T_FMT "qu"'
|
||||
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "qx"'
|
||||
int64_value="__int64"
|
||||
long_value="__int64"
|
||||
int64_strfn="strtoll"
|
||||
else
|
||||
# int64_literal may be overriden if your compiler thinks you have
|
||||
# a 64-bit value but CORE does not agree.
|
||||
AC_ERROR([could not detect a 64-bit integer type])
|
||||
fi
|
||||
|
||||
AC_SUBST(short_value)
|
||||
AC_SUBST(int_value)
|
||||
AC_SUBST(long_value)
|
||||
AC_SUBST(int64_value)
|
||||
AC_SUBST(int64_t_fmt)
|
||||
AC_SUBST(uint64_t_fmt)
|
||||
AC_SUBST(uint64_t_hex_fmt)
|
||||
AC_SUBST(int64_literal)
|
||||
AC_SUBST(uint64_literal)
|
||||
|
||||
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],
|
||||
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\1/'`],
|
||||
[Major version of this package])
|
||||
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],
|
||||
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\2/'`],
|
||||
[Minor version of this package])
|
||||
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL],
|
||||
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\3/'`],
|
||||
[Patch version of this package])
|
||||
|
||||
##################################
|
||||
#### Checks for header files. ####
|
||||
#### Checks for Directories. #####
|
||||
##################################
|
||||
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS( \
|
||||
arpa/inet.h \
|
||||
ctype.h \
|
||||
errno.h \
|
||||
fcntl.h \
|
||||
ifaddrs.h \
|
||||
limits.h \
|
||||
netdb.h \
|
||||
pthread.h \
|
||||
regex.h \
|
||||
semaphore.h \
|
||||
signal.h \
|
||||
stdarg.h \
|
||||
stdio.h \
|
||||
stdint.h \
|
||||
stdlib.h \
|
||||
string.h \
|
||||
strings.h \
|
||||
time.h \
|
||||
unistd.h \
|
||||
net/if_dl.h \
|
||||
net/if.h \
|
||||
netinet/ether.h \
|
||||
netinet/in.h \
|
||||
netinet/ip.h \
|
||||
netinet/udp.h \
|
||||
netinet/tcp.h \
|
||||
netinet/sctp.h \
|
||||
sys/ioctl.h \
|
||||
sys/param.h \
|
||||
sys/socket.h \
|
||||
sys/stat.h \
|
||||
sys/syslimits.h \
|
||||
sys/types.h \
|
||||
sys/time.h \
|
||||
sys/wait.h \
|
||||
sys/uio.h \
|
||||
)
|
||||
|
||||
##########################################
|
||||
#### Checks for typedefs, structures, ####
|
||||
#### and compiler characteristics. ####
|
||||
##########################################
|
||||
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[
|
||||
#include <sys/types.h>
|
||||
#include <time.h>])
|
||||
|
||||
AC_CHECK_FILE(/dev/random,
|
||||
AC_DEFINE([HAVE_DEV_RANDOM], [1],
|
||||
[Define to 1 if you have the /dev/random file.]))
|
||||
|
||||
AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
|
||||
[AC_TRY_RUN([
|
||||
int main()
|
||||
{
|
||||
unsigned long val = 1010, tmp, *mem = &val;
|
||||
|
||||
if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
|
||||
return 1;
|
||||
|
||||
tmp = val;
|
||||
|
||||
if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
|
||||
return 1;
|
||||
|
||||
if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
|
||||
return 1;
|
||||
|
||||
tmp = 3030;
|
||||
|
||||
if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
|
||||
return 1;
|
||||
|
||||
if (__sync_lock_test_and_set(&val, 4040) != 3030)
|
||||
return 1;
|
||||
|
||||
mem = &tmp;
|
||||
|
||||
if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
|
||||
return 1;
|
||||
|
||||
__sync_synchronize();
|
||||
|
||||
if (mem != &val)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
|
||||
|
||||
if test "$ap_cv_atomic_builtins" = "yes"; then
|
||||
AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
|
||||
fi
|
||||
AX_RECURSIVE_EVAL(["${bindir}"], [BIN_DIR])
|
||||
AX_RECURSIVE_EVAL(["${libdir}"], [LIB_DIR])
|
||||
AX_RECURSIVE_EVAL(["${sysconfdir}"], [SYSCONF_DIR])
|
||||
AX_RECURSIVE_EVAL(["${localstatedir}"], [LOCALSTATE_DIR])
|
||||
AC_SUBST(BIN_DIR)
|
||||
AC_SUBST(LIB_DIR)
|
||||
AC_SUBST(SYSCONF_DIR)
|
||||
AC_SUBST(LOCALSTATE_DIR)
|
||||
|
||||
#######################################
|
||||
#### Checks for library functions. ####
|
||||
#######################################
|
||||
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS(\
|
||||
atexit \
|
||||
gettimeofday \
|
||||
inet_ntop \
|
||||
inet_pton \
|
||||
inet_aton \
|
||||
memmove \
|
||||
sigaction \
|
||||
sigwait \
|
||||
sigsuspend \
|
||||
stpcpy \
|
||||
strcasecmp \
|
||||
strtoul \
|
||||
stricmp \
|
||||
strerror \
|
||||
writev \
|
||||
utime \
|
||||
utimes \
|
||||
sem_timedwait \
|
||||
pthread_yield \
|
||||
sched_yield \
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
AC_SEARCH_LIBS(gethostname, nsl)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_SEARCH_LIBS(pthread_barrier_wait, pthread)
|
||||
AC_SEARCH_LIBS(gnutls_global_set_log_level, gnutls)
|
||||
|
||||
AC_CHECK_FILE([lib/ogslib/configure.ac], [have_srclib=yes], [have_srclib=no])
|
||||
if test x$have_srclib == xyes; then
|
||||
AC_CONFIG_SUBDIRS([lib/ogslib])
|
||||
AC_SUBST(OGSCORE_CFLAGS, '-I$(top_srcdir)/lib/ogslib/src')
|
||||
AC_SUBST(OGSCORE_LIBS, '$(top_srcdir)/lib/ogslib/src/core/libogscore-1.0.la')
|
||||
AC_SUBST(OGSCRYPT_CFLAGS, '-I$(top_srcdir)/lib/ogslib/src')
|
||||
AC_SUBST(OGSCRYPT_LIBS, '$(top_srcdir)/lib/ogslib/src/crypt/libogscrypt-1.0.la')
|
||||
else
|
||||
PKG_CHECK_MODULES(OGSCORE, ogscore-1.0 >= 1.0.0)
|
||||
PKG_CHECK_MODULES(OGSCRYPT, ogscrypt-1.0 >= 1.0.0)
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_SRCLIB], [test x$have_srclib = xyes])
|
||||
|
||||
AC_SEARCH_LIBS([sctp_sendmsg], [sctp], [have_sctp=yes], [have_sctp=no])
|
||||
if test x$have_sctp == xno; then
|
||||
AC_SEARCH_LIBS([usrsctp_init], [usrsctp], [have_usrsctp=yes], [have_usrsctp=no])
|
||||
if test x$have_usrsctp == xno; then
|
||||
AC_MSG_ERROR([You must install the SCTP libraries and development headers to enable SCTP support.])
|
||||
else
|
||||
AC_DEFINE(HAVE_USRSCTP, 1,
|
||||
[Define if your system supports the usrsctp system calls])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_USRSCTP], [test x$have_usrsctp = xyes])
|
||||
|
||||
AC_CHECK_HEADERS( \
|
||||
netinet/sctp.h \
|
||||
)
|
||||
|
||||
AC_CHECK_LIB([pthread], [pthread_mutex_init], [LIBS="${LIBS} -lpthread"])
|
||||
AC_CHECK_LIB([dl], [dlopen], [LIBS="${LIBS} -ldl"])
|
||||
AC_CHECK_LIB([sctp], [sctp_sendmsg], [LIBS="${LIBS} -lsctp"])
|
||||
AC_CHECK_LIB([gnutls], [gnutls_global_init], [LIBS="${LIBS} -lgnutls"])
|
||||
AC_CHECK_LIB([gcrypt], [gcry_control], [LIBS="${LIBS} -lgcrypt"])
|
||||
AC_CHECK_LIB([idn], [idna_strerror], [LIBS="${LIBS} -lidn"])
|
||||
#AC_CHECK_LIB([fdcore], [fd_core_initialize], [LIBS="${LIBS} -lfdcore"])
|
||||
#AC_CHECK_LIB([fdproto], [fd_libproto_init], [LIBS="${LIBS} -lfdproto"])
|
||||
AC_CHECK_HEADERS(netinet/ip.h netinet/ip6.h net/route.h,,,[[
|
||||
#include <sys/types.h>
|
||||
#if HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#include <netinet/in.h>
|
||||
#if HAVE_NETINET_IN_SYSTM_H
|
||||
#include <netinet/in_systm.h>
|
||||
#endif
|
||||
]])
|
||||
|
||||
AC_CHECK_HEADERS(netinet/ip_icmp.h netinet/icmp6.h,,,[[
|
||||
#include <sys/types.h>
|
||||
#if HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#include <netinet/in.h>
|
||||
#if HAVE_NETINET_IN_SYSTM_H
|
||||
#include <netinet/in_systm.h>
|
||||
#endif
|
||||
#include <netinet/ip.h>
|
||||
]])
|
||||
|
||||
PKG_CHECK_MODULES([YAML], yaml-0.1 >= 0.1.4)
|
||||
PKG_CHECK_MODULES([MONGOC], libmongoc-1.0 >= 1.3.1)
|
||||
LIBS="$LIBS $MONGOC_LIBS"
|
||||
#PKG_CHECK_MODULES([LIBXML2], libxml-2.0 >= 2.9.1)
|
||||
#LIBS="$LIBS $LIBXML2_LIBS"
|
||||
FREEDIAMETER_DIR=freeDiameter-1.2.1
|
||||
AC_SUBST(FREEDIAMETER_DIR)
|
||||
|
||||
@@ -314,61 +174,62 @@ AC_SUBST(FREEDIAMETER_DIR)
|
||||
|
||||
AC_CONFIG_SUBDIRS([lib/freeDiameter-1.2.1])
|
||||
|
||||
AC_CONFIG_FILES([lib/core/include/core.h])
|
||||
AC_CONFIG_FILES([lib/core/src/Makefile])
|
||||
case $host in
|
||||
*)
|
||||
AC_CONFIG_FILES([lib/core/src/unix/Makefile])
|
||||
;;
|
||||
esac
|
||||
AC_CONFIG_FILES([lib/core/test/Makefile])
|
||||
AC_CONFIG_FILES([lib/core/Makefile])
|
||||
AC_CONFIG_FILES([lib/logger/Makefile])
|
||||
AC_CONFIG_FILES([lib/base/Makefile])
|
||||
AC_CONFIG_FILES([lib/s1ap/asn1c/Makefile])
|
||||
AC_CONFIG_FILES([lib/s1ap/Makefile])
|
||||
AC_CONFIG_FILES([lib/asn1c/Makefile])
|
||||
AC_CONFIG_FILES([lib/nas/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dbg_msg_dumps/Makefile])
|
||||
#AC_CONFIG_FILES([lib/fd/extensions/dict_legacy_xml/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_rfc5777/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_mip6i/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_nasreq/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_nas_mipv6/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_dcca/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_dcca_3gpp/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/dict_s6a/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/extensions/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/gx/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/s6a/Makefile])
|
||||
AC_CONFIG_FILES([lib/fd/Makefile])
|
||||
AC_CONFIG_FILES([lib/gtp/Makefile])
|
||||
AC_CONFIG_FILES([lib/ipfw/Makefile])
|
||||
AC_CONFIG_FILES([lib/Makefile])
|
||||
AC_CONFIG_FILES([src/app/Makefile])
|
||||
AC_CONFIG_FILES([src/mme/Makefile])
|
||||
AC_CONFIG_FILES([src/hss/Makefile])
|
||||
AC_CONFIG_FILES([src/sgw/Makefile])
|
||||
AC_CONFIG_FILES([src/pgw/Makefile])
|
||||
AC_CONFIG_FILES([src/pcrf/Makefile])
|
||||
AC_CONFIG_FILES([src/Makefile])
|
||||
AC_CONFIG_FILES([test/Makefile])
|
||||
AC_CONFIG_FILES([support/nextepc.conf])
|
||||
AC_CONFIG_FILES([support/config/nextepc.conf])
|
||||
AC_CONFIG_FILES([support/config/mme.conf])
|
||||
AC_CONFIG_FILES([support/config/sgw.conf])
|
||||
AC_CONFIG_FILES([support/config/pgw.conf])
|
||||
AC_CONFIG_FILES([support/config/hss.conf])
|
||||
AC_CONFIG_FILES([support/config/pcrf.conf])
|
||||
AC_CONFIG_FILES([support/config/Makefile])
|
||||
AC_CONFIG_FILES([support/freeDiameter/mme.conf])
|
||||
AC_CONFIG_FILES([support/freeDiameter/hss.conf])
|
||||
AC_CONFIG_FILES([support/freeDiameter/pgw.conf])
|
||||
AC_CONFIG_FILES([support/freeDiameter/hss.conf])
|
||||
AC_CONFIG_FILES([support/freeDiameter/pcrf.conf])
|
||||
#AC_CONFIG_FILES([support/freeDiameter/dict_legacy_xml.conf])
|
||||
AC_CONFIG_FILES([support/freeDiameter/Makefile])
|
||||
AC_CONFIG_FILES([support/systemd/nextepc-mmed.service])
|
||||
AC_CONFIG_FILES([support/systemd/nextepc-sgwd.service])
|
||||
AC_CONFIG_FILES([support/systemd/nextepc-pgwd.service])
|
||||
AC_CONFIG_FILES([support/systemd/nextepc-hssd.service])
|
||||
AC_CONFIG_FILES([support/systemd/nextepc-pcrfd.service])
|
||||
AC_CONFIG_FILES([support/systemd/Makefile])
|
||||
AC_CONFIG_FILES([support/logrotate/nextepc])
|
||||
AC_CONFIG_FILES([support/logrotate/Makefile])
|
||||
AC_CONFIG_FILES([support/newsyslog/nextepc.conf])
|
||||
AC_CONFIG_FILES([support/newsyslog/Makefile])
|
||||
AC_CONFIG_FILES([support/Makefile])
|
||||
AC_CONFIG_FILES([tests/sample.conf])
|
||||
AC_CONFIG_FILES([tests/sample-simple.conf])
|
||||
AC_CONFIG_FILES([tests/sample-volte.conf])
|
||||
AC_CONFIG_FILES([tests/sample-csfb.conf])
|
||||
AC_CONFIG_FILES([tests/Makefile])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
||||
echo "
|
||||
NextEPC configuration
|
||||
--------------------
|
||||
version : ${PACKAGE_VERSION}
|
||||
host : ${host}
|
||||
source code location : ${srcdir}
|
||||
compiler : ${CC}
|
||||
compiler flags : ${CFLAGS}
|
||||
linker flags : ${LDFLAGS} ${LIBS}
|
||||
config file directory : `eval echo \`echo ${sysconfdir}\``
|
||||
log file directory : `eval echo \`echo ${prefix}/var/log\``
|
||||
"
|
||||
AC_MSG_NOTICE([NextEPC configuration:
|
||||
|
||||
version: ${PACKAGE_VERSION}
|
||||
compiler: ${CC}
|
||||
compiler flags: ${CFLAGS} ${OGSLIB_CFLAGS} ${MONGOC_CFLAGS}
|
||||
linker flags: ${LDFLAGS} ${LIBS} ${OGSCORE_LIBS} ${OGSCRYPT_LIBS} ${MONGOC_LIBS}
|
||||
path prefix: ${prefix}
|
||||
binary file: ${BIN_DIR}/nextepc-epcd
|
||||
library directory: ${LIB_DIR}/nextepc
|
||||
configuration prefix: ${SYSCONF_DIR}/nextepc
|
||||
configuration file: ${SYSCONF_DIR}/nextepc/nextepc.conf
|
||||
pid file: ${LOCALSTATE_DIR}/run/nextepc.pid
|
||||
logging file: ${LOCALSTATE_DIR}/log/nextepc.log
|
||||
])
|
||||
|
||||
440
debian/changelog
vendored
Normal file
440
debian/changelog
vendored
Normal file
@@ -0,0 +1,440 @@
|
||||
nextepc (0.4.3) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 22 Jun 2019 03:30:10 +0000
|
||||
|
||||
nextepc (0.4.2~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:11:51 +0900
|
||||
|
||||
nextepc (0.4.2~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:09:02 +0900
|
||||
|
||||
nextepc (0.4.2) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:04:53 +0900
|
||||
|
||||
nextepc (0.4.1~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 09:59:17 +0000
|
||||
|
||||
nextepc (0.4.1~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 09:57:44 +0000
|
||||
|
||||
nextepc (0.4.1) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 08:18:59 +0000
|
||||
|
||||
nextepc (0.4.0) unstable; urgency=medium
|
||||
|
||||
* Integration with OGSLIB
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Apr 2019 14:09:03 +0000
|
||||
|
||||
nextepc (0.3.11~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 27 Apr 2019 13:59:08 +0000
|
||||
|
||||
nextepc (0.3.11~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 27 Apr 2019 13:57:42 +0000
|
||||
|
||||
nextepc (0.3.10~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 17 Aug 2018 04:28:38 +0000
|
||||
|
||||
nextepc (0.3.10~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 17 Aug 2018 04:21:39 +0000
|
||||
|
||||
nextepc (0.3.9~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:40:44 +0000
|
||||
|
||||
nextepc (0.3.9~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:39:33 +0000
|
||||
|
||||
nextepc (0.3.9~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:38:15 +0000
|
||||
|
||||
nextepc (0.3.8-1~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 05 May 2018 22:37:45 +0900
|
||||
|
||||
nextepc (0.3.8~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 05 May 2018 21:48:55 +0900
|
||||
|
||||
nextepc (0.3.8~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 29 Apr 2018 21:47:25 +0900
|
||||
|
||||
nextepc (0.3.8~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 29 Apr 2018 21:45:36 +0900
|
||||
|
||||
nextepc (0.3.7~artful) artful; urgency=medium
|
||||
|
||||
* Buf Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 14 Apr 2018 15:02:05 +0900
|
||||
|
||||
nextepc (0.3.7~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 14 Apr 2018 14:59:37 +0900
|
||||
|
||||
nextepc (0.3.6~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Wed, 21 Mar 2018 08:02:52 +0000
|
||||
|
||||
nextepc (0.3.6~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Wed, 21 Mar 2018 08:00:12 +0000
|
||||
|
||||
nextepc (0.3.5~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 06 Mar 2018 12:41:53 +0000
|
||||
|
||||
nextepc (0.3.5~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 06 Mar 2018 12:40:07 +0000
|
||||
|
||||
nextepc (0.3.4-1~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:16:08 +0000
|
||||
|
||||
nextepc (0.3.4-1~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:14:43 +0000
|
||||
|
||||
nextepc (0.3.4~xenial) xenial; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:09:23 +0000
|
||||
|
||||
nextepc (0.3.4~artful) artful; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 01:33:04 +0000
|
||||
|
||||
nextepc (0.3.3-3~artful) artful; urgency=medium
|
||||
|
||||
* Support Docker
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 13 Feb 2018 04:47:43 +0000
|
||||
|
||||
nextepc (0.3.3-3~xenial) xenial; urgency=medium
|
||||
|
||||
* Support Docker
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 13 Feb 2018 04:44:47 +0000
|
||||
|
||||
nextepc (0.3.3-2~xenial) xenial; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 16:08:14 +0000
|
||||
|
||||
nextepc (0.3.3-2~artful) artful; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 16:05:44 +0000
|
||||
|
||||
nextepc (0.3.3-1~xenial) xenial; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:39:37 +0000
|
||||
|
||||
nextepc (0.3.3-1~artful) artful; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:33:57 +0000
|
||||
|
||||
nextepc (0.3.3~artful) artful; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:05:08 +0000
|
||||
|
||||
nextepc (0.3.3~xenial) xenial; urgency=medium
|
||||
|
||||
* Minor bug fixes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:00:24 +0000
|
||||
|
||||
nextepc (0.3.2~zesty) zesty; urgency=medium
|
||||
|
||||
* VoLTE Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:06:32 +0000
|
||||
|
||||
nextepc (0.3.2~xenial) xenial; urgency=medium
|
||||
|
||||
* VoLTE Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:03:41 +0000
|
||||
|
||||
nextepc (0.3.2~artful) artful; urgency=medium
|
||||
|
||||
* VoLTE Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:00:24 +0000
|
||||
|
||||
nextepc (0.3.1-1~zesty) zesty; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:10:52 +0000
|
||||
|
||||
nextepc (0.3.1-1~xenial) xenial; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:09:26 +0000
|
||||
|
||||
nextepc (0.3.1-1~artful) artful; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:04:50 +0000
|
||||
|
||||
nextepc (0.3-3~zesty) zesty; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:18:26 +0000
|
||||
|
||||
nextepc (0.3-3~xenial) xenial; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:16:51 +0000
|
||||
|
||||
nextepc (0.3-3~artful) artful; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:15:18 +0000
|
||||
|
||||
nextepc (0.3-2~artful) artful; urgency=medium
|
||||
|
||||
* Fix the bug reboot scenario
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 07:06:52 +0000
|
||||
|
||||
nextepc (0.3-1~artful) artful; urgency=medium
|
||||
|
||||
* IPv6 Support (Linux Only)
|
||||
* Change Configuration File (JSON -> YAML)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 05:07:31 +0000
|
||||
|
||||
nextepc (0.2-6~artful2) artful; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:30:53 +0000
|
||||
|
||||
nextepc (0.2-6~zesty2) zesty; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:30:08 +0000
|
||||
|
||||
nextepc (0.2-6~xenial2) xenial; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:28:41 +0000
|
||||
|
||||
nextepc (0.2-6~zesty) zesty; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:25:37 +0000
|
||||
|
||||
nextepc (0.2-6~xenial) xenial; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:23:54 +0000
|
||||
|
||||
nextepc (0.2-6~artful) artful; urgency=medium
|
||||
|
||||
* postrm script is improved to purge package completely.
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 03 Nov 2017 02:00:14 +0000
|
||||
|
||||
nextepc (0.2-5~artful) artful; urgency=medium
|
||||
|
||||
* Relase 0.2
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 02 Nov 2017 07:13:23 +0000
|
||||
|
||||
nextepc (0.2-5~zesty) zesty; urgency=medium
|
||||
|
||||
* Relase 0.2
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 02 Nov 2017 07:12:17 +0000
|
||||
|
||||
nextepc (0.2-5~xenial) xenial; urgency=medium
|
||||
|
||||
* Release 0.2
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 02 Nov 2017 07:11:16 +0000
|
||||
|
||||
nextepc (0.2-4~xenial2) xenial; urgency=medium
|
||||
|
||||
* Fix the bug nextepc-pgwd post install script
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 14:07:54 +0000
|
||||
|
||||
nextepc (0.2-4~artful) artful; urgency=medium
|
||||
|
||||
* Fix the bug nextepc-pgwd post install script
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 14:06:31 +0000
|
||||
|
||||
nextepc (0.2-4~zesty) zesty; urgency=medium
|
||||
|
||||
* Fix the bug nextepc-pgwd post install script
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 14:04:23 +0000
|
||||
|
||||
nextepc (0.2-4~xenial) xenial; urgency=medium
|
||||
|
||||
* Fix the bug nextepc-pgwd post install script
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 14:01:58 +0000
|
||||
|
||||
nextepc (0.2-3~artful) artful; urgency=medium
|
||||
|
||||
* MongoDB re-connect using systemd
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 12:10:18 +0000
|
||||
|
||||
nextepc (0.2-3~zesty) zesty; urgency=medium
|
||||
|
||||
* MongoDB re-connect using systemd
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 12:07:36 +0000
|
||||
|
||||
nextepc (0.2-3~xenial) xenial; urgency=medium
|
||||
|
||||
* MongoDB re-connect using systemd
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 12:00:16 +0000
|
||||
|
||||
nextepc (0.2-2~artful) artful; urgency=medium
|
||||
|
||||
* Fix PGW installation
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 05:02:03 +0000
|
||||
|
||||
nextepc (0.2-2~xenial) xenial; urgency=medium
|
||||
|
||||
* Fix PGW installation
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Tue, 31 Oct 2017 03:16:02 +0000
|
||||
|
||||
nextepc (0.2-1~artful2) artful; urgency=medium
|
||||
|
||||
* Fix the compile error [-Werror=pointer]
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 30 Oct 2017 13:14:42 +0000
|
||||
|
||||
nextepc (0.2-1~artful1) artful; urgency=medium
|
||||
|
||||
* Remove mongodb build-dependancy for Ubuntu 17.10(i386)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 30 Oct 2017 12:46:58 +0000
|
||||
|
||||
nextepc (0.2-1~artful) artful; urgency=medium
|
||||
|
||||
* Ubuntu 17.10(amd64)
|
||||
* Currently, `mongodb` is not available in Ubuntu 17.10(i386)
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 30 Oct 2017 06:50:47 +0000
|
||||
|
||||
nextepc (0.2-1~zesty) zesty; urgency=medium
|
||||
|
||||
* Ubuntu 17.04
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 30 Oct 2017 06:47:55 +0000
|
||||
|
||||
nextepc (0.2-1~xenial) xenial; urgency=medium
|
||||
|
||||
* Add matapackage
|
||||
* dh_overide_auto_test is re-enabled
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 30 Oct 2017 03:48:39 +0000
|
||||
|
||||
nextepc (0.1.1) UNRELEASED; urgency=medium
|
||||
|
||||
* Initial release.
|
||||
|
||||
-- Harald Welte <laforge@gnumonks.org> Tue, 17 Oct 2017 08:19:54 +0200
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
||||
9
|
||||
147
debian/control
vendored
Normal file
147
debian/control
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
Source: nextepc
|
||||
Maintainer: Harald Welte <laforge@gnumonks.org>
|
||||
Section: net
|
||||
Priority: optional
|
||||
Build-Depends: debhelper (>= 9),
|
||||
autotools-dev,
|
||||
dh-autoreconf,
|
||||
dh-systemd,
|
||||
pkg-config,
|
||||
autoconf,
|
||||
automake,
|
||||
libtool,
|
||||
flex,
|
||||
bison,
|
||||
ogslib-dev (>= 1.0.0),
|
||||
libgnutls28-dev,
|
||||
libgcrypt-dev,
|
||||
libssl-dev,
|
||||
libidn11-dev,
|
||||
libmongoc-dev,
|
||||
libbson-dev,
|
||||
libsctp-dev,
|
||||
libyaml-dev,
|
||||
Standards-Version: 3.9.8
|
||||
Vcs-Browser: https://github.com/open5gs/nextepc
|
||||
Vcs-Git: git://github.com/open5gs/nextepc
|
||||
Homepage: https://open5gs.org/nextepc
|
||||
|
||||
Package: nextepc-core
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends}
|
||||
Description: Open Source based 3GPP EPC (Shared Files)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package contains some core libraries/plugins required by the other
|
||||
binary packages such as nextepc-{mme,sgw,pgw,pcrf,hss}.
|
||||
|
||||
Package: nextepc-mme
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
nextepc-core (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC MME (Mobility Management Entity)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package provides the MME (Mobility Management Engine), which
|
||||
terminates the S1 interfaces from the eNodeBs cells in the cellular
|
||||
network, and interfaces via S11 to the SGW as well as via S6a to the
|
||||
HSS.
|
||||
|
||||
Package: nextepc-sgw
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
nextepc-core (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC SGW (Serving Gateway)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package provides the SGW (Serving Gateway) which is situated
|
||||
between the MME and PGW. It implements the S11 interface to the MME,
|
||||
and the S5 interface to the PGW.
|
||||
|
||||
Package: nextepc-pgw
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
udev,
|
||||
nextepc-core (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC PGW (Packet Data Network Gateway)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package provides the PGW or PDN-GW (Packet Data Network Gateway)
|
||||
element of the EPC, i.e. the gateway between the EPC and the external
|
||||
packet data network, such as the public Internet. It implements the S5
|
||||
interface towards the S-GW, the SGi interface towards the Internet,
|
||||
and the S7 interface towards the PCRF.
|
||||
|
||||
Package: nextepc-pcrf
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
mongodb,
|
||||
nextepc-core (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC PCRF (Policy and Charging Rules Function)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package contains the PCRF (Policy and Charging Rules Function),
|
||||
which controls the service quality (QoS) of individual connections and
|
||||
how to account/charge related traffic. It implements the Gx interface
|
||||
towards the PGW using the DIAMETER protocol.
|
||||
|
||||
Package: nextepc-hss
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
mongodb,
|
||||
nextepc-core (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC HSS (Home Subscriber Server)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package provides the HSS (Home Subscriber Server) element of the
|
||||
EPC, i.e. the central database of mobile network subscribers, with
|
||||
their IMSI, MSISDN, cryptographic key materials, service subscription
|
||||
information, etc. It implements the S6a interface towards the MME
|
||||
using the DIAMETER protocol.
|
||||
|
||||
Package: nextepc
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${misc:Depends},
|
||||
mongodb,
|
||||
nextepc-core (= ${binary:Version}),
|
||||
nextepc-mme (= ${binary:Version}),
|
||||
nextepc-sgw (= ${binary:Version}),
|
||||
nextepc-pgw (= ${binary:Version}),
|
||||
nextepc-hss (= ${binary:Version}),
|
||||
nextepc-pcrf (= ${binary:Version})
|
||||
Description: Open Source based 3GPP EPC (metapackage)
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This is a metapackage that depends on all the nextepc parts.
|
||||
(MME, SGW, PGW, HSS, PCRF)
|
||||
|
||||
Package: nextepc-dbg
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${misc:Depends},
|
||||
nextepc (= ${binary:Version})
|
||||
Description: Debug symbols for NextEPC
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
|
||||
Packet Core, i.e. the core network of an LTE network.
|
||||
.
|
||||
This package contains debug symbols for NextEPC.
|
||||
55
debian/copyright
vendored
Normal file
55
debian/copyright
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: nextepc
|
||||
Source: https://github.com/acetcom/nextepc
|
||||
|
||||
Files: *
|
||||
Copyright: 2017 NextEPC Group
|
||||
License: AGPL-3
|
||||
|
||||
Files: lib/freeDiameter-1.2.1/*
|
||||
Copyright: 2008-2011, WIDE Project and NICT
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2017 Harald Welte <laforge@gnumonks.org>
|
||||
License: GPL-3
|
||||
|
||||
License: GPL-3
|
||||
This package is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 3 of the License
|
||||
.
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public
|
||||
License version 3 can be found in "/usr/share/common-licenses/GPL-3".
|
||||
|
||||
License: BSD-3-clause
|
||||
Software License Agreement (BSD License)
|
||||
.
|
||||
Copyright (c) 2008-2011, WIDE Project and NICT
|
||||
All rights reserved.
|
||||
.
|
||||
Redistribution and use of this software in source and binary forms, with or without modification, are·
|
||||
permitted provided that the following conditions are met:
|
||||
.
|
||||
* Redistributions of source code must retain the above·
|
||||
copyright notice, this list of conditions and the·
|
||||
following disclaimer.
|
||||
···
|
||||
* Redistributions in binary form must reproduce the above·
|
||||
copyright notice, this list of conditions and the·
|
||||
following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
.
|
||||
* Neither the name of the WIDE Project or NICT nor the·
|
||||
names of its contributors may be used to endorse or·
|
||||
promote products derived from this software without·
|
||||
specific prior written permission of WIDE Project and·
|
||||
NICT.
|
||||
5
debian/nextepc-core.install
vendored
Normal file
5
debian/nextepc-core.install
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
usr/lib/*/nextepc/*
|
||||
var/log/nextepc
|
||||
etc/nextepc/nextepc.conf
|
||||
etc/nextepc/freeDiameter/cacert.pem
|
||||
support/logrotate/nextepc /etc/logrotate.d
|
||||
52
debian/nextepc-core.postinst
vendored
Normal file
52
debian/nextepc-core.postinst
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
#!/bin/sh
|
||||
# postinst script for nextepc
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <postinst> `abort-remove'
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# create a nextepc group and user
|
||||
if ! getent passwd nextepc >/dev/null; then
|
||||
adduser --system --disabled-password --disabled-login \
|
||||
--home /var/run/nextepc --no-create-home \
|
||||
--quiet --group nextepc
|
||||
fi
|
||||
for dir in /var/log/nextepc; do
|
||||
if ! dpkg-statoverride --list "$dir" >/dev/null 2>&1; then
|
||||
dpkg-statoverride --update --add nextepc nextepc 0755 "$dir"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
44
debian/nextepc-core.postrm
vendored
Normal file
44
debian/nextepc-core.postrm
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
# postrm script for nextepc-core
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version>
|
||||
# * <new-postrm> `abort-install'
|
||||
# * <new-postrm> `abort-install' <old-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version>
|
||||
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||
# <overwriter-version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
|
||||
case "$1" in
|
||||
purge)
|
||||
rm -f /var/log/nextepc/*.log || true
|
||||
rmdir /var/log/nextepc || true
|
||||
;;
|
||||
|
||||
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postrm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
6
debian/nextepc-hss.install
vendored
Normal file
6
debian/nextepc-hss.install
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
usr/bin/nextepc-hssd
|
||||
etc/nextepc/freeDiameter/hss.conf
|
||||
etc/nextepc/freeDiameter/hss.cert.pem
|
||||
etc/nextepc/freeDiameter/hss.key.pem
|
||||
etc/nextepc/hss.conf
|
||||
support/systemd/nextepc-hssd.service lib/systemd/system
|
||||
6
debian/nextepc-mme.install
vendored
Normal file
6
debian/nextepc-mme.install
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
usr/bin/nextepc-mmed
|
||||
etc/nextepc/freeDiameter/mme.conf
|
||||
etc/nextepc/freeDiameter/mme.cert.pem
|
||||
etc/nextepc/freeDiameter/mme.key.pem
|
||||
etc/nextepc/mme.conf
|
||||
support/systemd/nextepc-mmed.service lib/systemd/system
|
||||
6
debian/nextepc-pcrf.install
vendored
Normal file
6
debian/nextepc-pcrf.install
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
usr/bin/nextepc-pcrfd
|
||||
etc/nextepc/freeDiameter/pcrf.conf
|
||||
etc/nextepc/freeDiameter/pcrf.cert.pem
|
||||
etc/nextepc/freeDiameter/pcrf.key.pem
|
||||
etc/nextepc/pcrf.conf
|
||||
support/systemd/nextepc-pcrfd.service lib/systemd/system
|
||||
7
debian/nextepc-pgw.install
vendored
Normal file
7
debian/nextepc-pgw.install
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
usr/bin/nextepc-pgwd
|
||||
etc/nextepc/freeDiameter/pgw.conf
|
||||
etc/nextepc/freeDiameter/pgw.cert.pem
|
||||
etc/nextepc/freeDiameter/pgw.key.pem
|
||||
etc/nextepc/pgw.conf
|
||||
support/network/99-nextepc.* etc/systemd/network
|
||||
support/systemd/nextepc-pgwd.service lib/systemd/system
|
||||
53
debian/nextepc-pgw.postinst
vendored
Normal file
53
debian/nextepc-pgw.postinst
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
# postinst script for nextepc
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <postinst> `abort-remove'
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
if test "x`sysctl -n net.ipv6.conf.all.disable_ipv6`" = x1; then
|
||||
echo "net.ipv6.conf.all.disable_ipv6=0" > /etc/sysctl.d/30-nextepc.conf
|
||||
sysctl -p /etc/sysctl.d/30-nextepc.conf
|
||||
fi
|
||||
if test "x`systemctl is-enabled systemd-networkd`" = xdisabled; then
|
||||
systemctl enable systemd-networkd
|
||||
fi
|
||||
deb-systemd-invoke restart systemd-networkd
|
||||
if test -f /etc/sysctl.d/30-nextepc.conf && grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
echo "net.ipv6.conf.pgwtun.disable_ipv6=0" > /etc/sysctl.d/30-nextepc.conf
|
||||
sysctl -p /etc/sysctl.d/30-nextepc.conf
|
||||
fi
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
46
debian/nextepc-pgw.postrm
vendored
Normal file
46
debian/nextepc-pgw.postrm
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
# postrm script for nextepc-core
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version>
|
||||
# * <new-postrm> `abort-install'
|
||||
# * <new-postrm> `abort-install' <old-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version>
|
||||
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||
# <overwriter-version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
|
||||
case "$1" in
|
||||
purge)
|
||||
if grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap del name pgwtun mode tun
|
||||
fi
|
||||
rm -f /etc/sysctl.d/30-nextepc.conf
|
||||
;;
|
||||
|
||||
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postrm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
3
debian/nextepc-sgw.install
vendored
Normal file
3
debian/nextepc-sgw.install
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
usr/bin/nextepc-sgwd
|
||||
etc/nextepc/sgw.conf
|
||||
support/systemd/nextepc-sgwd.service lib/systemd/system
|
||||
28
debian/rules
vendored
Executable file
28
debian/rules
vendored
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
export DH_VERBOSE=1
|
||||
|
||||
DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)
|
||||
DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
|
||||
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
|
||||
|
||||
# This has to be exported to make some magic below work.
|
||||
#export DH_OPTIONS
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
%:
|
||||
dh $@ --with autoreconf --with systemd
|
||||
|
||||
override_dh_strip:
|
||||
dh_strip --dbg-package=nextepc-dbg
|
||||
|
||||
override_dh_auto_test:
|
||||
sctp_exclude_list=; \
|
||||
if ! cat /proc/net/protocols | grep SCTP > /dev/null; then \
|
||||
sctp_exclude_list="-x sctp-test"; \
|
||||
fi; \
|
||||
tests/testunit -f ./tests/sample.conf $$sctp_exclude_list || exit; \
|
||||
|
||||
#override_dh_makeshlibs:
|
||||
# dh_makeshlibs -V
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
||||
76
docker/README.md
Normal file
76
docker/README.md
Normal file
@@ -0,0 +1,76 @@
|
||||
Docker running example
|
||||
===========================================
|
||||
* Build Image
|
||||
$ docker-compose build
|
||||
|
||||
* Development
|
||||
$ docker-compose run dev
|
||||
|
||||
* Runtime
|
||||
$ docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.run.yml run run
|
||||
|
||||
* Test
|
||||
$ docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.test.yml run test
|
||||
|
||||
* Test(ubuntu:artful)
|
||||
$ TAG=artful docker-compose build
|
||||
$ TAG=artful docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.test.yml run test
|
||||
|
||||
* Development(fedora:latest)
|
||||
$ DIST=fedora docker-compose build
|
||||
$ DIST=fedora docker-compose run dev
|
||||
|
||||
* Runtime(debian:jessie)
|
||||
$ DIST=debian TAG=jessie docker-compose build
|
||||
$ DIST=debian TAG=jessie docker-compose
|
||||
-f docker-compose.yml -f docker-compose.run.yml run run
|
||||
|
||||
* All Test with All Environment
|
||||
$ ./check.sh
|
||||
|
||||
* Run WebUI
|
||||
$ docker-compose up -d
|
||||
|
||||
For OpenSUSE Build Service Release
|
||||
===========================================
|
||||
|
||||
* Build Package
|
||||
$ ./build-aux/git-version-gen . > .tarball-version
|
||||
$ dpkg-source -b .
|
||||
$ rm -f .tarball-version
|
||||
|
||||
* Get Release Key
|
||||
$ wget http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
|
||||
$ sudo apt-key add Release.key
|
||||
|
||||
* Setup Repository
|
||||
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs-latest.list"
|
||||
$ sudo apt-get update
|
||||
|
||||
For Launchpad Release
|
||||
===========================================
|
||||
|
||||
* Run Docker
|
||||
$ docker-compose run dev
|
||||
|
||||
* Setup Debian Environment
|
||||
export DEBFULLNAME='Sukchan Lee'
|
||||
export DEBEMAIL='acetcom@gmail.com'
|
||||
|
||||
* Transfer GPG key
|
||||
$ gpg --export-secret-keys --armor --output private.asc
|
||||
$ gpg --import private.asc
|
||||
$ gpg --export > public.asc
|
||||
$ gpg --import public.asc
|
||||
|
||||
* Upload LaunchPad
|
||||
$ dch -i
|
||||
$ debuild -S
|
||||
$ dput ppa:acetcom/nextepc *.source.changes
|
||||
|
||||
* Build pckage
|
||||
$ dpkg-buildpackage
|
||||
|
||||
24
docker/build/Dockerfile
Normal file
24
docker/build/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
ARG dist=ubuntu
|
||||
ARG tag=latest
|
||||
ARG username=acetcom
|
||||
FROM ${username}/${dist}-${tag}-nextepc-base
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
WORKDIR /root
|
||||
COPY setup.sh /root
|
||||
|
||||
ARG USER=acetcom
|
||||
ARG REPO=nextepc
|
||||
ARG BRANCH=master
|
||||
RUN git clone https://github.com/$USER/$REPO
|
||||
ADD https://api.github.com/repos/$USER/$REPO/git/refs/heads/$BRANCH /root/nextepc-ver.json
|
||||
|
||||
RUN cd nextepc && \
|
||||
git fetch && git checkout -f -B master origin/master && \
|
||||
autoreconf -f -i && \
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--localstatedir=/var && \
|
||||
make -j `nproc` install
|
||||
10
docker/build/setup.sh
Executable file
10
docker/build/setup.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap add name pgwtun mode tun
|
||||
fi
|
||||
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
|
||||
ip addr add 45.45.0.1/16 dev pgwtun
|
||||
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev pgwtun
|
||||
ip link set pgwtun up
|
||||
24
docker/centos/7/base/Dockerfile
Normal file
24
docker/centos/7/base/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
ARG dist=centos
|
||||
ARG tag=latest
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN yum -y install \
|
||||
autoconf \
|
||||
libtool \
|
||||
gcc \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
lksctp-tools-devel \
|
||||
libidn-devel \
|
||||
gnutls-devel \
|
||||
libgcrypt-devel \
|
||||
openssl-devel \
|
||||
cyrus-sasl-devel \
|
||||
libyaml-devel \
|
||||
iproute
|
||||
|
||||
RUN yum -y install epel-release && \
|
||||
yum -y install mongo-c-driver-devel
|
||||
22
docker/centos/7/dev/Dockerfile
Normal file
22
docker/centos/7/dev/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
ARG dist=centos
|
||||
ARG tag=latest
|
||||
ARG username=acetcom
|
||||
FROM ${username}/${dist}-${tag}-nextepc-base
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN yum -y install \
|
||||
cscope \
|
||||
vim \
|
||||
sudo \
|
||||
iputils \
|
||||
net-tools
|
||||
|
||||
COPY setup.sh /root
|
||||
|
||||
ARG username=acetcom
|
||||
RUN useradd -m --uid=1000 ${username} && \
|
||||
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
|
||||
chmod 0440 /etc/sudoers.d/${username}
|
||||
|
||||
WORKDIR /home/${username}
|
||||
10
docker/centos/7/dev/setup.sh
Executable file
10
docker/centos/7/dev/setup.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap add name pgwtun mode tun
|
||||
fi
|
||||
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
|
||||
ip addr add 45.45.0.1/16 dev pgwtun
|
||||
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev pgwtun
|
||||
ip link set pgwtun up
|
||||
1
docker/centos/latest
Symbolic link
1
docker/centos/latest
Symbolic link
@@ -0,0 +1 @@
|
||||
7
|
||||
18
docker/check.sh
Executable file
18
docker/check.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
docker-compose build
|
||||
docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
|
||||
|
||||
TAG=artful docker-compose build
|
||||
TAG=artful docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
|
||||
|
||||
DIST=fedora docker-compose build
|
||||
DIST=fedora docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
|
||||
|
||||
DIST=centos docker-compose build
|
||||
DIST=centos docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
|
||||
|
||||
DIST=debian TAG=jessie docker-compose build
|
||||
DIST=debian TAG=jessie docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
|
||||
|
||||
docker rm $(docker ps -qa --no-trunc --filter "status=exited")
|
||||
37
docker/debian/jessie/base/Dockerfile
Normal file
37
docker/debian/jessie/base/Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
||||
ARG dist=debian
|
||||
ARG tag=jessie
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
gcc \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
libsctp-dev \
|
||||
libgnutls28-dev \
|
||||
libgcrypt-dev \
|
||||
libssl-dev \
|
||||
libidn11-dev \
|
||||
libyaml-dev \
|
||||
build-essential \
|
||||
iproute2 \
|
||||
ca-certificates \
|
||||
netbase \
|
||||
curl \
|
||||
pkg-config && \
|
||||
apt-get clean
|
||||
|
||||
WORKDIR /root
|
||||
RUN curl -SLO "https://github.com/mongodb/mongo-c-driver/releases/download/1.9.2/mongo-c-driver-1.9.2.tar.gz"; \
|
||||
tar xzf mongo-c-driver-1.9.2.tar.gz; \
|
||||
cd mongo-c-driver-1.9.2; \
|
||||
./configure --disable-automatic-init-and-cleanup; \
|
||||
make -j `nproc` install; \
|
||||
ldconfig;
|
||||
1
docker/debian/jessie/dev
Symbolic link
1
docker/debian/jessie/dev
Symbolic link
@@ -0,0 +1 @@
|
||||
../../ubuntu/bionic/dev
|
||||
1
docker/debian/latest
Symbolic link
1
docker/debian/latest
Symbolic link
@@ -0,0 +1 @@
|
||||
stretch
|
||||
1
docker/debian/stable
Symbolic link
1
docker/debian/stable
Symbolic link
@@ -0,0 +1 @@
|
||||
stretch
|
||||
40
docker/debian/stretch/base/Dockerfile
Normal file
40
docker/debian/stretch/base/Dockerfile
Normal file
@@ -0,0 +1,40 @@
|
||||
ARG dist=debian
|
||||
ARG tag=stable
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
ARG tag=stable
|
||||
#RUN apt-get update && \
|
||||
# apt-get install -y netselect-apt && \
|
||||
# apt-get clean && \
|
||||
# if [ "x$tag" = "xlatest" ]; then \
|
||||
# netselect-apt -o /etc/apt/sources.list; \
|
||||
# else \
|
||||
# netselect-apt ${tag} -o /etc/apt/sources.list; \
|
||||
# fi
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
gcc \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
libsctp-dev \
|
||||
libgnutls28-dev \
|
||||
libgcrypt-dev \
|
||||
libssl-dev \
|
||||
libidn11-dev \
|
||||
libmongoc-dev \
|
||||
libbson-dev \
|
||||
libyaml-dev \
|
||||
build-essential \
|
||||
iproute2 \
|
||||
ca-certificates \
|
||||
netbase \
|
||||
pkg-config && \
|
||||
apt-get clean
|
||||
1
docker/debian/stretch/dev
Symbolic link
1
docker/debian/stretch/dev
Symbolic link
@@ -0,0 +1 @@
|
||||
../../ubuntu/bionic/dev
|
||||
22
docker/docker-compose.run.yml
Normal file
22
docker/docker-compose.run.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
run:
|
||||
network_mode: "host"
|
||||
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
|
||||
depends_on:
|
||||
- mongodb
|
||||
- build
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- "/dev/net/tun:/dev/net/tun"
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0
|
||||
volumes:
|
||||
- config:/etc/nextepc
|
||||
hostname: nextepc-run
|
||||
command: /bin/bash -c "/root/setup.sh; /usr/bin/nextepc-epcd"
|
||||
|
||||
volumes:
|
||||
config: {}
|
||||
18
docker/docker-compose.test.yml
Normal file
18
docker/docker-compose.test.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
test:
|
||||
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
|
||||
depends_on:
|
||||
- mongodb
|
||||
- build
|
||||
environment:
|
||||
DB_URI: mongodb://mongodb/nextepc
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- "/dev/net/tun:/dev/net/tun"
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0
|
||||
hostname: nextepc-test
|
||||
command: /bin/bash -c "/root/setup.sh; /usr/bin/testepc"
|
||||
84
docker/docker-compose.yml
Normal file
84
docker/docker-compose.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mongodb:
|
||||
image: mongo
|
||||
container_name: nextepc-mongodb
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- mongodb:/data/db
|
||||
|
||||
webui:
|
||||
build: webui
|
||||
image: ${USER}/nextepc-webui
|
||||
container_name: nextepc-webui
|
||||
depends_on:
|
||||
- mongodb
|
||||
ports:
|
||||
- "3000:3000"
|
||||
depends_on:
|
||||
- mongodb
|
||||
environment:
|
||||
DB_URI: mongodb://mongodb/nextepc
|
||||
|
||||
base:
|
||||
build:
|
||||
context: ./${DIST-ubuntu}/${TAG-latest}/base
|
||||
args:
|
||||
dist: ${DIST-ubuntu}
|
||||
tag: ${TAG-latest}
|
||||
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-base
|
||||
command: /bin/bash -c "echo 'base' services"
|
||||
|
||||
build:
|
||||
build:
|
||||
context: ./build
|
||||
args:
|
||||
dist: ${DIST-ubuntu}
|
||||
tag: ${TAG-latest}
|
||||
username: ${USER}
|
||||
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
|
||||
depends_on:
|
||||
- base
|
||||
command: /bin/bash -c "echo 'build' services"
|
||||
|
||||
dev:
|
||||
build:
|
||||
context: ./${DIST-ubuntu}/${TAG-latest}/dev
|
||||
args:
|
||||
dist: ${DIST-ubuntu}
|
||||
tag: ${TAG-latest}
|
||||
username: ${USER}
|
||||
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-dev
|
||||
depends_on:
|
||||
- mongodb
|
||||
- base
|
||||
environment:
|
||||
- DB_URI=mongodb://mongodb/nextepc
|
||||
- DISPLAY=$DISPLAY
|
||||
# - DISPLAY=docker.for.mac.localhost:0
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- "/dev/net/tun:/dev/net/tun"
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0
|
||||
volumes:
|
||||
- home:/home/${USER}
|
||||
- ${HOME}:/mnt
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix
|
||||
# - /etc/localtime:/etc/localtime:ro
|
||||
# - /usr/share/zoneinfo/Europe/Helsinki:/etc/localtime:ro
|
||||
hostname: nextepc-dev
|
||||
user: ${USER}
|
||||
entrypoint: /bin/bash -c "/bin/bash -c \"$${@}\""
|
||||
command: |
|
||||
/bin/bash -c "
|
||||
sudo chmod 666 /dev/net/tun
|
||||
sudo /root/setup.sh
|
||||
/bin/bash || exit 0
|
||||
"
|
||||
volumes:
|
||||
mongodb: {}
|
||||
home: {}
|
||||
24
docker/fedora/29/base/Dockerfile
Normal file
24
docker/fedora/29/base/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
ARG dist=fedora
|
||||
ARG tag=latest
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN dnf -y install \
|
||||
autoconf \
|
||||
libtool \
|
||||
gcc \
|
||||
make \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
lksctp-tools-devel \
|
||||
libidn-devel \
|
||||
gnutls-devel \
|
||||
libgcrypt-devel \
|
||||
mongo-c-driver-devel \
|
||||
openssl-devel \
|
||||
cyrus-sasl-devel \
|
||||
snappy-devel \
|
||||
libyaml-devel \
|
||||
iproute
|
||||
22
docker/fedora/29/dev/Dockerfile
Normal file
22
docker/fedora/29/dev/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
ARG dist=fedora
|
||||
ARG tag=latest
|
||||
ARG username=acetcom
|
||||
FROM ${username}/${dist}-${tag}-nextepc-base
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN dnf -y install \
|
||||
cscope \
|
||||
vim \
|
||||
sudo \
|
||||
iputils \
|
||||
net-tools
|
||||
|
||||
COPY setup.sh /root
|
||||
|
||||
ARG username=acetcom
|
||||
RUN useradd -m --uid=1000 ${username} && \
|
||||
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
|
||||
chmod 0440 /etc/sudoers.d/${username}
|
||||
|
||||
WORKDIR /home/${username}
|
||||
10
docker/fedora/29/dev/setup.sh
Executable file
10
docker/fedora/29/dev/setup.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap add name pgwtun mode tun
|
||||
fi
|
||||
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
|
||||
ip addr add 45.45.0.1/16 dev pgwtun
|
||||
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev pgwtun
|
||||
ip link set pgwtun up
|
||||
1
docker/fedora/latest
Symbolic link
1
docker/fedora/latest
Symbolic link
@@ -0,0 +1 @@
|
||||
29
|
||||
10
docker/package/Dockerfile
Normal file
10
docker/package/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
ARG tag=latest
|
||||
FROM ubuntu:${tag}
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -y install software-properties-common && \
|
||||
add-apt-repository ppa:acetcom/nextepc && \
|
||||
apt-get update && \
|
||||
apt-get install -y nextepc
|
||||
|
||||
WORKDIR /root
|
||||
1
docker/ubuntu/artful
Symbolic link
1
docker/ubuntu/artful
Symbolic link
@@ -0,0 +1 @@
|
||||
bionic
|
||||
30
docker/ubuntu/bionic/base/Dockerfile
Normal file
30
docker/ubuntu/bionic/base/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
||||
ARG dist=ubuntu
|
||||
ARG tag=latest
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
gcc \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
libsctp-dev \
|
||||
libgnutls28-dev \
|
||||
libgcrypt-dev \
|
||||
libssl-dev \
|
||||
libidn11-dev \
|
||||
libmongoc-dev \
|
||||
libbson-dev \
|
||||
libyaml-dev \
|
||||
build-essential \
|
||||
iproute2 \
|
||||
ca-certificates \
|
||||
netbase \
|
||||
pkg-config && \
|
||||
apt-get clean
|
||||
36
docker/ubuntu/bionic/dev/Dockerfile
Normal file
36
docker/ubuntu/bionic/dev/Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
||||
ARG dist=ubuntu
|
||||
ARG tag=latest
|
||||
ARG username=acetcom
|
||||
FROM ${username}/${dist}-${tag}-nextepc-base
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
git-buildpackage \
|
||||
debhelper \
|
||||
devscripts \
|
||||
osc \
|
||||
dput \
|
||||
dh-autoreconf \
|
||||
dh-systemd \
|
||||
manpages-dev \
|
||||
fakeroot \
|
||||
cscope \
|
||||
vim \
|
||||
sudo \
|
||||
iputils-ping \
|
||||
wireshark \
|
||||
net-tools && \
|
||||
apt-get clean
|
||||
|
||||
COPY setup.sh /root
|
||||
|
||||
ARG username=acetcom
|
||||
RUN useradd -m --uid=1000 ${username} && \
|
||||
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
|
||||
chmod 0440 /etc/sudoers.d/${username}
|
||||
|
||||
WORKDIR /home/${username}
|
||||
10
docker/ubuntu/bionic/dev/setup.sh
Executable file
10
docker/ubuntu/bionic/dev/setup.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap add name pgwtun mode tun
|
||||
fi
|
||||
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
|
||||
ip addr add 45.45.0.1/16 dev pgwtun
|
||||
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev pgwtun
|
||||
ip link set pgwtun up
|
||||
1
docker/ubuntu/latest
Symbolic link
1
docker/ubuntu/latest
Symbolic link
@@ -0,0 +1 @@
|
||||
bionic
|
||||
37
docker/ubuntu/trusty/base/Dockerfile
Normal file
37
docker/ubuntu/trusty/base/Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
||||
ARG dist=ubuntu
|
||||
ARG tag=latest
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
gcc \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
libsctp-dev \
|
||||
libgnutls28-dev \
|
||||
libgcrypt-dev \
|
||||
libssl-dev \
|
||||
libidn11-dev \
|
||||
libyaml-dev \
|
||||
build-essential \
|
||||
iproute2 \
|
||||
ca-certificates \
|
||||
netbase \
|
||||
curl \
|
||||
pkg-config && \
|
||||
apt-get clean
|
||||
|
||||
WORKDIR /root
|
||||
RUN curl -SLO "https://github.com/mongodb/mongo-c-driver/releases/download/1.9.2/mongo-c-driver-1.9.2.tar.gz"; \
|
||||
tar xzf mongo-c-driver-1.9.2.tar.gz; \
|
||||
cd mongo-c-driver-1.9.2; \
|
||||
./configure --disable-automatic-init-and-cleanup; \
|
||||
make -j `nproc` install; \
|
||||
ldconfig;
|
||||
1
docker/ubuntu/trusty/dev
Symbolic link
1
docker/ubuntu/trusty/dev
Symbolic link
@@ -0,0 +1 @@
|
||||
../xenial/dev
|
||||
1
docker/ubuntu/xenial
Symbolic link
1
docker/ubuntu/xenial
Symbolic link
@@ -0,0 +1 @@
|
||||
bionic
|
||||
21
docker/webui/Dockerfile
Normal file
21
docker/webui/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM node:carbon
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
ARG PACKAGE=nextepc
|
||||
ARG VERSION=0.3.3
|
||||
|
||||
RUN set -e; \
|
||||
cd /usr/src; \
|
||||
rm -rf ./$PACKAGE; \
|
||||
curl -SLO "https://github.com/acetcom/$PACKAGE/archive/v$VERSION.tar.gz"; \
|
||||
tar -xvf v$VERSION.tar.gz; \
|
||||
mv ./$PACKAGE-$VERSION/ ./$PACKAGE;
|
||||
|
||||
WORKDIR /usr/src/nextepc/webui
|
||||
RUN npm install && \
|
||||
npm run build
|
||||
|
||||
CMD npm run start
|
||||
|
||||
EXPOSE 3000
|
||||
3
docs/.gitignore
vendored
Normal file
3
docs/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
_site
|
||||
.sass-cache
|
||||
.jekyll-metadata
|
||||
24
docs/Gemfile
Normal file
24
docs/Gemfile
Normal file
@@ -0,0 +1,24 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
|
||||
gem "jekyll", "~> 3.8.5"
|
||||
gem "minima", "~> 2.0"
|
||||
gem 'jekyll-seo-tag'
|
||||
|
||||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||
# gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-feed", "~> 0.6"
|
||||
gem "jekyll-redirect-from"
|
||||
end
|
||||
77
docs/Gemfile.lock
Normal file
77
docs/Gemfile.lock
Normal file
@@ -0,0 +1,77 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.6.0)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.1.5)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.10.0)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.8.5)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-feed (0.12.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-redirect-from (0.15.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.6.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (1.17.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
minima (2.5.0)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (3.0.3)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.10.0)
|
||||
ffi (~> 1.0)
|
||||
rouge (3.3.0)
|
||||
ruby_dep (1.5.0)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (~> 3.8.5)
|
||||
jekyll-feed (~> 0.6)
|
||||
jekyll-redirect-from
|
||||
jekyll-seo-tag
|
||||
minima (~> 2.0)
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.1
|
||||
108
docs/_config.yml
Normal file
108
docs/_config.yml
Normal file
@@ -0,0 +1,108 @@
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
# which you are expected to set up once and rarely edit after that. If you find
|
||||
# yourself editing this file very often, consider using Jekyll's data files
|
||||
# feature for the data you need to update frequently.
|
||||
#
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||
|
||||
# Site settings
|
||||
# These are used to personalize your new site. If you look in the HTML files,
|
||||
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||
# You can create any custom variable you would like, and they will be accessible
|
||||
# in the templates via {{ site.myvariable }}.
|
||||
title: NextEPC
|
||||
email: acetcom@gmail.com
|
||||
description: >- # this means to ignore newlines until "baseurl:"
|
||||
An open source implementation of the Evolved Packet Core of LTE networks
|
||||
supporting 3GPP Release 13.
|
||||
baseurl: "/nextepc" # the subpath of your site, e.g. /blog
|
||||
url: "https://open5gs.org" # the base hostname & protocol for your site, e.g. http://example.com
|
||||
author: "Sukchan Lee"
|
||||
github_username: acetcom
|
||||
google_analytics: UA-139225646-2
|
||||
|
||||
# Build settings
|
||||
markdown: kramdown
|
||||
plugins:
|
||||
- jekyll-feed
|
||||
- jekyll-seo-tag
|
||||
- jekyll-redirect-from
|
||||
|
||||
include:
|
||||
- _pages
|
||||
|
||||
# Exclude from processing.
|
||||
# The following items will not be processed, by default. Create a custom list
|
||||
# to override the default setting.
|
||||
exclude:
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
- node_modules
|
||||
- vendor/bundle/
|
||||
- vendor/cache/
|
||||
- vendor/gems/
|
||||
- vendor/ruby/
|
||||
|
||||
# Minima date format
|
||||
# refer to http://shopify.github.io/liquid/filters/date/ if you want to customize this
|
||||
minima_reboot:
|
||||
date_format: "%Y-%m-%d %H:%M"
|
||||
|
||||
footer_icons:
|
||||
- username: open5gs
|
||||
url: https://open5gs.org
|
||||
icon: icon-github.svg
|
||||
|
||||
header_pages:
|
||||
- _pages/docs.md
|
||||
- _pages/faq.md
|
||||
- _pages/about.md
|
||||
- _pages/github.md
|
||||
|
||||
show_excerpts: true
|
||||
|
||||
# Collections
|
||||
collections:
|
||||
docs:
|
||||
output: true
|
||||
permalink: /:collection/:path/
|
||||
|
||||
defaults:
|
||||
# _pages
|
||||
- scope:
|
||||
path: ""
|
||||
type: pages
|
||||
values:
|
||||
layout: page
|
||||
# _posts
|
||||
- scope:
|
||||
path: ""
|
||||
type: posts
|
||||
values:
|
||||
layout: post
|
||||
# _docs
|
||||
- scope:
|
||||
path: ""
|
||||
type: docs
|
||||
values:
|
||||
layout: post
|
||||
|
||||
# Archives
|
||||
# Type
|
||||
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
|
||||
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
|
||||
# Path (examples)
|
||||
# - Archive page should exist at path when using Liquid method or you can
|
||||
# expect broken links (especially with breadcrumbs enabled)
|
||||
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
|
||||
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
|
||||
# - <base_path/my-awesome-category/index.html ~> path: /
|
||||
category_archive:
|
||||
type: liquid
|
||||
path: /categories/
|
||||
tag_archive:
|
||||
type: liquid
|
||||
path: /tags/
|
||||
268
docs/_docs/guide/01-quickstart.md
Normal file
268
docs/_docs/guide/01-quickstart.md
Normal file
@@ -0,0 +1,268 @@
|
||||
---
|
||||
title: Quickstart
|
||||
---
|
||||
|
||||
**Note:** NextEPC supports installation of packages in *Debian/Ubuntu and openSUSE* environments. *CentOS, Fedora, FreeBSD, and Mac OSX* require you to [build with source code]({{ site.url }}{{ site.baseurl }}/docs/guide/02-building-nextepc-from-sources)
|
||||
{: .notice--warning}
|
||||
|
||||
### Install NextEPC with a Package Manager
|
||||
---
|
||||
|
||||
The NextEPC package is available on the recent versions of *Ubuntu*.
|
||||
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install software-properties-common
|
||||
$ sudo add-apt-repository ppa:open5gs/latest
|
||||
$ sudo apt update
|
||||
$ sudo apt install nextepc
|
||||
```
|
||||
|
||||
The NextEPC package is also available on [OBS](https://build.opensuse.org/package/show/home:acetcom:open5gs:snapshot/nextepc). First, install the authentication key as shown below.
|
||||
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install wget gnupg
|
||||
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/Release.key
|
||||
$ sudo apt-key add Release.key
|
||||
|
||||
```
|
||||
|
||||
In Debian 9.0(stretch), you can install it as follows:
|
||||
|
||||
```bash
|
||||
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/ ./' > /etc/apt/sources.list.d/open5gs.list"
|
||||
$ sudo apt update
|
||||
$ sudo apt install nextepc
|
||||
```
|
||||
|
||||
Other Linux distributions can be installed by changing the path.
|
||||
|
||||
```
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_9.0/
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_16.04/
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_17.10/
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
|
||||
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.10/
|
||||
```
|
||||
|
||||
[Martin Hauke](https://build.opensuse.org/user/show/mnhauke) packaged NextEPC for *openSUSE* on [OBS](https://build.opensuse.org/package/show/home:mnhauke:nextepc/nextepc).
|
||||
|
||||
```bash
|
||||
$ sudo zypper addrepo -f obs://home:mnhauke:nextepc home:mnhauke:nextepc
|
||||
$ sudo zypper install nextepc
|
||||
$ sudo zypper install mongodb-server mongodb-shell
|
||||
```
|
||||
|
||||
### Configure NextEPC
|
||||
---
|
||||
|
||||
Modify [/etc/nextepc/mme.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/mme.conf.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC
|
||||
|
||||
```diff
|
||||
diff -u /etc/nextepc/mme.conf.old /etc/nextepc/mme.conf
|
||||
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
|
||||
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
|
||||
@@ -8,18 +8,20 @@ parameter:
|
||||
mme:
|
||||
freeDiameter: mme.conf
|
||||
s1ap:
|
||||
+ addr: 192.168.0.100
|
||||
gtpc:
|
||||
+ addr: 192.168.0.100
|
||||
gummei:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
mme_gid: 2
|
||||
mme_code: 1
|
||||
tai:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
- tac: 12345
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
+ tac: 7
|
||||
security:
|
||||
integrity_order : [ EIA1, EIA2, EIA0 ]
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
```
|
||||
|
||||
Modify [/etc/nextepc/sgw.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/sgw.conf.in) to set the GTP-U IP address.
|
||||
```diff
|
||||
diff -u /etc/nextepc/sgw.conf.old /etc/nextepc/sgw.conf
|
||||
--- sgw.conf.old 2018-04-15 18:30:25.000000000 +0900
|
||||
+++ sgw.conf 2018-04-15 18:30:30.000000000 +0900
|
||||
@@ -14,3 +14,4 @@
|
||||
gtpc:
|
||||
addr: 127.0.0.2
|
||||
gtpu:
|
||||
+ addr: 192.168.0.100
|
||||
```
|
||||
|
||||
After changing conf files, please restart NextEPC daemons.
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart nextepc-mmed
|
||||
$ sudo systemctl restart nextepc-sgwd
|
||||
```
|
||||
|
||||
### Install WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to install WebUI of NextEPC
|
||||
|
||||
1. *Debian and Ubuntu* based Linux distributions can install [Node.js](https://nodejs.org/) as follows:
|
||||
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install curl
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
```
|
||||
|
||||
2. To install [Node.js](https://nodejs.org/) on *openSUSE*, run the following:
|
||||
|
||||
```bash
|
||||
$ sudo zypper install nodejs8
|
||||
```
|
||||
|
||||
You can now install WebUI of NextEPC.
|
||||
|
||||
```bash
|
||||
$ curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/install | sudo -E bash -
|
||||
```
|
||||
|
||||
### Register Subscriber Information
|
||||
---
|
||||
|
||||
Connect to `http://localhost:3000` and login with **admin** account.
|
||||
|
||||
> Username : admin
|
||||
> Password : 1423
|
||||
|
||||
**Tip:** You can change the password in _Account_ Menu.
|
||||
{: .notice--info}
|
||||
|
||||
To add subscriber information, you can do WebUI operations in the following order:
|
||||
|
||||
1. Go to `Subscriber` Menu.
|
||||
2. Click `+` Button to add a new subscriber.
|
||||
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
|
||||
4. Click `SAVE` Button
|
||||
|
||||
**Tip:** This addition immediately affects NextEPC without restaring any daemon.
|
||||
{: .notice--info}
|
||||
|
||||
|
||||
### Adding a route for UE to have Internet connectivity
|
||||
---
|
||||
|
||||
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
|
||||
|
||||
```bash
|
||||
### Check IP Tables
|
||||
$ sudo iptables -L
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain FORWARD (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Check NAT Tables
|
||||
$ sudo iptables -L -t nat
|
||||
Chain PREROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
|
||||
```
|
||||
|
||||
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
|
||||
{: .notice--danger}
|
||||
|
||||
### Turn on your eNodeB and Phone
|
||||
---
|
||||
- Connect your eNodeB to the IP of your server via the standard S1AP port of SCTP 36412 (for MME)
|
||||
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
|
||||
- You can view the log at `/var/log/nextepc/*.log`.
|
||||
|
||||
### Troubleshooting
|
||||
---
|
||||
|
||||
Problem with NextEPC can be filed as [GitHub Issues](https://github.com/open5gs/nextepc/issues). Please include the following to get help:
|
||||
|
||||
- Attach `*.pcapng` file created by wireskark.
|
||||
- Attach configuration files at `/etc/nextepc/*.conf`.
|
||||
- Attach log files at `/var/log/nextepc/*.log`.
|
||||
|
||||
You can modify the configuration file to record more logs.
|
||||
|
||||
```diff
|
||||
diff -u /etc/nextepc/mme.conf.old /etc/nextepc/mme.conf
|
||||
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
|
||||
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
logger:
|
||||
file: @LOCALSTATE_DIR@/log/nextepc/mme.log
|
||||
+ level: debug
|
||||
|
||||
parameter:
|
||||
```
|
||||
|
||||
After changing conf files, please restart NextEPC daemons.
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart nextepc-mmed
|
||||
$ sudo systemctl restart nextepc-sgwd
|
||||
```
|
||||
|
||||
### Uninstall NextEPC and WebUI
|
||||
|
||||
How to remove NextEPC package:
|
||||
|
||||
1. On *Ubuntu*:
|
||||
|
||||
```bash
|
||||
$ sudo apt purge nextepc
|
||||
$ sudo apt autoremove
|
||||
```
|
||||
|
||||
2. On *openSUSE*:
|
||||
|
||||
```bash
|
||||
$ sudo zypper rm nextepc
|
||||
```
|
||||
|
||||
You may need to remove manually `/var/log/nextepc` unless it is empty.
|
||||
|
||||
```bash
|
||||
$ sudo rm -Rf /var/log/nextepc
|
||||
```
|
||||
|
||||
The WebUI of NextEPC can be removed as follows:
|
||||
|
||||
```bash
|
||||
curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/uninstall | sudo -E bash -
|
||||
```
|
||||
|
||||
426
docs/_docs/guide/02-building-nextepc-from-sources.md
Normal file
426
docs/_docs/guide/02-building-nextepc-from-sources.md
Normal file
@@ -0,0 +1,426 @@
|
||||
---
|
||||
title: Building nextepc from Sources
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This post explains how to compile and install the source code on **Debian/Ubuntu** based Linux Distribution.
|
||||
{: .blue}
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install mongodb
|
||||
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Create the TUN device with the interface name `pgwtun`.
|
||||
|
||||
```bash
|
||||
$ sudo ip tuntap add name pgwtun mode tun
|
||||
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
$ sudo ip addr add cafe::1/64 dev pgwtun
|
||||
$ sudo ip link set pgwtun up
|
||||
```
|
||||
|
||||
The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
|
||||
```bash
|
||||
$ sudo apt install autoconf libtool gcc pkg-config git flex bison libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make check
|
||||
```
|
||||
|
||||
You need to perform the **installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
### Configure NextEPC
|
||||
---
|
||||
|
||||
**Note:** In the developer environment, all settings can be managed in one place, such as [$INSTALL_PREFIX/install/etc/nextepc/nextepc.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/nextepc.conf.in).
|
||||
{: .notice--danger}
|
||||
|
||||
Modify [$INSTALL_PREFIX/install/etc/nextepc/nextepc.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/nextepc.conf.in) to set the S1AP/GTP-C/GTP-U IP address, PLMN ID, and TAC
|
||||
|
||||
```diff
|
||||
diff -u ./install/etc/nextepc/nextepc.conf.old ./install/etc/nextepc/nextepc.conf
|
||||
--- nextepc.conf.old 2018-04-15 18:28:31.000000000 +0900
|
||||
+++ nextepc.conf 2018-04-15 19:53:10.000000000 +0900
|
||||
@@ -74,6 +74,7 @@ mme:
|
||||
# dev: eth0
|
||||
#
|
||||
s1ap:
|
||||
+ addr: 192.168.0.100
|
||||
|
||||
#
|
||||
# <GTP-C Server>>
|
||||
@@ -87,6 +88,7 @@ mme:
|
||||
# - addr: ::1
|
||||
#
|
||||
gtpc:
|
||||
+ addr: 192.168.0.100
|
||||
|
||||
#
|
||||
# <GUMMEI>
|
||||
@@ -110,8 +112,8 @@ mme:
|
||||
#
|
||||
gummei:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
mme_gid: 2
|
||||
mme_code: 1
|
||||
|
||||
@@ -149,9 +151,9 @@ mme:
|
||||
#
|
||||
tai:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
- tac: 12345
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
+ tac: 7
|
||||
|
||||
security:
|
||||
integrity_order : [ EIA1, EIA2, EIA0 ]
|
||||
@@ -242,6 +244,7 @@ sgw:
|
||||
# gtpu:
|
||||
#
|
||||
gtpu:
|
||||
+ addr: 192.168.0.100
|
||||
|
||||
pgw:
|
||||
freeDiameter: pgw.conf
|
||||
```
|
||||
|
||||
### Running NextEPC
|
||||
---
|
||||
|
||||
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./nextepc-epcd
|
||||
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
|
||||
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
|
||||
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
MongoDB URI: 'mongodb://localhost/nextepc'
|
||||
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
|
||||
...
|
||||
```
|
||||
|
||||
Several command line options are provided.
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./nextepc-epcd -h
|
||||
Password:
|
||||
NextEPC daemon v0.4.0.67-078c - Apr 6 2019 17:20:24
|
||||
Usage: ./nextepc-epcd [arguments]
|
||||
|
||||
Arguments:
|
||||
-v Show version
|
||||
-h Show help
|
||||
-D Start as daemon
|
||||
-f Set configuration file name
|
||||
-l log_file Log file path to be logged to
|
||||
-p pid_file PID file path
|
||||
-d core:gtp:event Enable debugging
|
||||
-t sock:mem: Enable trace
|
||||
```
|
||||
|
||||
|
||||
### Building WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
|
||||
|
||||
```bash
|
||||
$ sudo apt install curl
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ cd webui
|
||||
➜ webui git:(master) ✗ npm install
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
➜ webui git:(master) ✗ npm run dev
|
||||
```
|
||||
|
||||
### Register Subscriber Information
|
||||
---
|
||||
|
||||
Connect to `http://localhost:3000` and login with **admin** account.
|
||||
|
||||
> Username : admin
|
||||
> Password : 1423
|
||||
|
||||
**Note:**
|
||||
You can change the password in _Account_ Menu.
|
||||
{: .notice--info}
|
||||
|
||||
To add subscriber information, you can do WebUI operations in the following order:
|
||||
|
||||
1. Go to `Subscriber` Menu.
|
||||
2. Click `+` Button to add a new subscriber.
|
||||
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
|
||||
4. Click `SAVE` Button
|
||||
|
||||
**Tip:** This addition immediately affects NextEPC without restaring any daemon.
|
||||
{: .notice--warning}
|
||||
|
||||
### Adding a route for UE to have internet connectivity
|
||||
---
|
||||
|
||||
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
|
||||
|
||||
```bash
|
||||
### Check IP Tables
|
||||
$ sudo iptables -L
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain FORWARD (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Check NAT Tables
|
||||
$ sudo iptables -L -t nat
|
||||
Chain PREROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
|
||||
```
|
||||
|
||||
**Note:** It is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
|
||||
|
||||
### Turn on your eNodeB and Phone
|
||||
---
|
||||
|
||||
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
|
||||
- You can view the log at `$INSTALL_PREFIX/var/log/nextepc/*.log`.
|
||||
|
||||
### Troubleshooting
|
||||
---
|
||||
|
||||
Debugging tools can help you troubleshoot problems.
|
||||
|
||||
- [GDB](https://www.gnu.org/software/gdb/) can be used as below:
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ sudo apt install gdb
|
||||
➜ nextepc git:(master) ✗ ./libtool --mode=execute gdb ./nextepc-epcd
|
||||
```
|
||||
|
||||
- On *Mac OS X*, you can use the [LLDB](https://lldb.llvm.org/).
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./libtool --mode=execute sudo lldb ./nextepc-epcd
|
||||
```
|
||||
|
||||
You can use the command line option[`-d`] to record more logs.
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./nextepc-epcd -d
|
||||
04/07 16:46:23.982: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
|
||||
PID[5185]: '/Users/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
|
||||
File Logging: '/Users/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
MongoDB URI: 'mongodb://localhost/nextepc'
|
||||
Configuration: '/Users/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
04/07 16:46:23.996: [core] INFO: PCRF try to initialize (epc.c:37)
|
||||
04/07 16:46:24.033: [core] INFO: PCRF initialize...done (epc.c:40)
|
||||
04/07 16:46:24.035: [core] INFO: PGW try to initialize (epc.c:84)
|
||||
04/07 16:46:24.132: [thread] DEBUG: [0x10d4df908] thread started (ogs-thread.c:101)
|
||||
04/07 16:46:24.132: [thread] DEBUG: [0x10d4df908] worker signal (ogs-thread.c:66)
|
||||
04/07 16:46:24.132: [fd] INFO: CONNECTED TO 'pgw.localdomain' (TCP,soc#11): (fd_logger.c:113)
|
||||
04/07 16:46:24.133: [core] INFO: PGW initialize...done (epc.c:87)
|
||||
04/07 16:46:24.133: [pgw] DEBUG: pgw_state_initial(): INIT (pgw_sm.c:15)
|
||||
04/07 16:46:24.133: [fd] INFO: CONNECTED TO 'pcrf.localdomain' (TCP,soc#11): (fd_logger.c:113)
|
||||
04/07 16:46:24.134: [pgw] DEBUG: pgw_state_operational(): ENTRY (pgw_sm.c:33)
|
||||
04/07 16:46:24.135: [core] INFO: SGW try to initialize (epc.c:133)
|
||||
04/07 16:46:24.136: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.136: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.137: [sock] DEBUG: socket bind 127.0.0.3:2123 (ogs-socket.c:107)
|
||||
04/07 16:46:24.138: [sock] DEBUG: udp_server() [127.0.0.3]:2123 (ogs-udp.c:55)
|
||||
04/07 16:46:24.139: [gtp] INFO: gtp_server() [127.0.0.3]:2123 (gtp_path.c:35)
|
||||
04/07 16:46:24.140: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.140: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.141: [sock] DEBUG: socket bind 127.0.0.3:2152 (ogs-socket.c:107)
|
||||
04/07 16:46:24.142: [sock] DEBUG: udp_server() [127.0.0.3]:2152 (ogs-udp.c:55)
|
||||
04/07 16:46:24.143: [gtp] INFO: gtp_server() [127.0.0.3]:2152 (gtp_path.c:35)
|
||||
04/07 16:46:24.158: [thread] DEBUG: [0x10d4df408] worker signal (ogs-thread.c:66)
|
||||
04/07 16:46:24.158: [thread] DEBUG: [0x10d4df408] thread started (ogs-thread.c:101)
|
||||
04/07 16:46:24.159: [sgw] DEBUG: sgw_state_initial(): INIT
|
||||
(sgw_sm.c:12)
|
||||
04/07 16:46:24.159: [core] INFO: SGW initialize...done (epc.c:136)
|
||||
04/07 16:46:24.160: [sgw] DEBUG: sgw_state_operational(): ENTRY
|
||||
(sgw_sm.c:30)
|
||||
04/07 16:46:24.161: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.162: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.162: [sock] DEBUG: socket bind 127.0.0.2:2123 (ogs-socket.c:107)
|
||||
04/07 16:46:24.162: [core] INFO: HSS try to initialize (epc.c:184)
|
||||
04/07 16:46:24.163: [sock] DEBUG: udp_server() [127.0.0.2]:2123 (ogs-udp.c:55)
|
||||
04/07 16:46:24.164: [gtp] INFO: gtp_server() [127.0.0.2]:2123 (gtp_path.c:35)
|
||||
04/07 16:46:24.164: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.165: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.166: [sock] DEBUG: socket bind 192.168.0.3:2152 (ogs-socket.c:107)
|
||||
04/07 16:46:24.166: [sock] DEBUG: udp_server() [192.168.0.3]:2152 (ogs-udp.c:55)
|
||||
04/07 16:46:24.167: [gtp] INFO: gtp_server() [192.168.0.3]:2152 (gtp_path.c:35)
|
||||
04/07 16:46:24.254: [core] INFO: HSS initialize...done (epc.c:187)
|
||||
04/07 16:46:24.255: [core] INFO: MME try to initialize (epc.c:217)
|
||||
04/07 16:46:24.366: [fd] INFO: CONNECTED TO 'mme.localdomain' (TCP,soc#9): (fd_logger.c:113)
|
||||
04/07 16:46:24.367: [fd] INFO: CONNECTED TO 'hss.localdomain' (TCP,soc#17): (fd_logger.c:113)
|
||||
04/07 16:46:24.367: [thread] DEBUG: [0x10d4dfe08] thread started (ogs-thread.c:101)
|
||||
04/07 16:46:24.367: [core] INFO: MME initialize...done (epc.c:220)
|
||||
04/07 16:46:24.367: [thread] DEBUG: [0x10d4dfe08] worker signal (ogs-thread.c:66)
|
||||
|
||||
|
||||
NextEPC daemon v0.4.0.67-078c - Apr 6 2019 17:20:24
|
||||
|
||||
04/07 16:46:24.368: [mme] DEBUG: mme_state_initial(): INIT
|
||||
(mme_sm.c:23)
|
||||
04/07 16:46:24.368: [mme] DEBUG: mme_state_operational(): ENTRY
|
||||
(mme_sm.c:43)
|
||||
04/07 16:46:24.368: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.368: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.368: [sock] DEBUG: socket bind 192.168.0.3:2123 (ogs-socket.c:107)
|
||||
04/07 16:46:24.368: [sock] DEBUG: udp_server() [192.168.0.3]:2123 (ogs-udp.c:55)
|
||||
04/07 16:46:24.368: [gtp] INFO: gtp_server() [192.168.0.3]:2123 (gtp_path.c:35)
|
||||
04/07 16:46:24.368: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
|
||||
04/07 16:46:24.368: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
|
||||
04/07 16:46:24.368: [sock] DEBUG: socket connect 127.0.0.2:2123
|
||||
(ogs-socket.c:132)
|
||||
04/07 16:46:24.368: [sock] DEBUG: udp_client() [127.0.0.2]:2123 (ogs-udp.c:89)
|
||||
04/07 16:46:24.368: [gtp] INFO: gtp_client() [127.0.0.2]:2123 (gtp_path.c:49)
|
||||
04/07 16:46:24.368: [mme] DEBUG: Old INITMSG (numout:10 maxin:2048 maxattempt:8 maxinit_to:60000) (s1ap_usrsctp.c:283)
|
||||
04/07 16:46:24.368: [mme] DEBUG: New INITMSG (numout:30 maxin:65535 maxattempt:4 maxinit_to:8000) (s1ap_usrsctp.c:311)
|
||||
04/07 16:46:24.368: [mme] INFO: s1ap_server() [192.168.0.3]:36412 (s1ap_usrsctp.c:69)
|
||||
04/07 16:46:24.609: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010f2296 (pgw_ipfw.c:277)
|
||||
04/07 16:46:24.610: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010f2296 0053756b (pgw_ipfw.c:280)
|
||||
04/07 16:46:25.611: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010f3a6d (pgw_ipfw.c:277)
|
||||
04/07 16:46:25.612: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010f3a6d 0053756b (pgw_ipfw.c:280)
|
||||
|
||||
04/07 16:46:26.607: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010fa451 (pgw_ipfw.c:277)
|
||||
04/07 16:46:26.608: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010fa451 0053756b (pgw_ipfw.c:280)
|
||||
...
|
||||
...
|
||||
...
|
||||
^C04/07 16:46:27.013: [core] INFO: SIGINT received (main.c:60)
|
||||
04/07 16:46:27.013: [core] INFO: NextEPC daemon terminating... (main.c:185)
|
||||
04/07 16:46:27.013: [core] INFO: DB-Client try to terminate (application.c:116)
|
||||
04/07 16:46:27.019: [core] INFO: DB-Client terminate...done (application.c:118)
|
||||
04/07 16:46:27.019: [core] INFO: MME try to terminate (epc.c:229)
|
||||
04/07 16:46:27.019: [event] DEBUG: interrupt all (ogs-queue.c:260)
|
||||
04/07 16:46:27.019: [thread] DEBUG: [0x10d4dfe08] thread running(1) (ogs-thread.c:111)
|
||||
04/07 16:46:27.019: [mme] DEBUG: mme_state_operational(): EXIT
|
||||
(mme_sm.c:43)
|
||||
04/07 16:46:27.020: [mme] DEBUG: mme_state_final(): INIT
|
||||
(mme_sm.c:32)
|
||||
04/07 16:46:27.020: [thread] DEBUG: [0x10d4dfe08] worker done (ogs-thread.c:72)
|
||||
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread destroy (ogs-thread.c:123)
|
||||
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread join (ogs-thread.c:132)
|
||||
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread done (ogs-thread.c:138)
|
||||
04/07 16:46:27.022: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
|
||||
04/07 16:46:27.148: [core] INFO: MME terminate...done (epc.c:231)
|
||||
04/07 16:46:27.148: [core] INFO: HSS try to terminate (epc.c:194)
|
||||
04/07 16:46:27.149: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
|
||||
04/07 16:46:27.257: [core] INFO: HSS terminate...done (epc.c:196)
|
||||
04/07 16:46:27.257: [core] INFO: SGW try to terminate (epc.c:143)
|
||||
04/07 16:46:27.258: [event] DEBUG: interrupt all (ogs-queue.c:260)
|
||||
04/07 16:46:27.258: [thread] DEBUG: [0x10d4df408] thread running(1) (ogs-thread.c:111)
|
||||
04/07 16:46:27.258: [sgw] DEBUG: sgw_state_operational(): EXIT
|
||||
(sgw_sm.c:30)
|
||||
04/07 16:46:27.259: [sgw] DEBUG: sgw_state_final(): INIT
|
||||
(sgw_sm.c:21)
|
||||
04/07 16:46:27.260: [thread] DEBUG: [0x10d4df408] worker done (ogs-thread.c:72)
|
||||
04/07 16:46:27.260: [thread] DEBUG: [0x10d4df408] thread destroy (ogs-thread.c:123)
|
||||
04/07 16:46:27.261: [thread] DEBUG: [0x10d4df408] thread join (ogs-thread.c:132)
|
||||
04/07 16:46:27.261: [thread] DEBUG: [0x10d4df408] thread done (ogs-thread.c:138)
|
||||
04/07 16:46:27.263: [core] INFO: SGW terminate...done (epc.c:145)
|
||||
04/07 16:46:27.263: [core] INFO: PGW try to terminate (epc.c:94)
|
||||
04/07 16:46:27.264: [event] DEBUG: interrupt all (ogs-queue.c:260)
|
||||
04/07 16:46:27.265: [thread] DEBUG: [0x10d4df908] thread running(1) (ogs-thread.c:111)
|
||||
04/07 16:46:27.265: [pgw] DEBUG: pgw_state_operational(): EXIT (pgw_sm.c:33)
|
||||
04/07 16:46:27.266: [pgw] DEBUG: pgw_state_final(): INIT (pgw_sm.c:24)
|
||||
04/07 16:46:27.267: [thread] DEBUG: [0x10d4df908] worker done (ogs-thread.c:72)
|
||||
04/07 16:46:27.268: [thread] DEBUG: [0x10d4df908] thread destroy (ogs-thread.c:123)
|
||||
04/07 16:46:27.269: [thread] DEBUG: [0x10d4df908] thread join (ogs-thread.c:132)
|
||||
04/07 16:46:27.270: [thread] DEBUG: [0x10d4df908] thread done (ogs-thread.c:138)
|
||||
04/07 16:46:27.271: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
|
||||
04/07 16:46:27.401: [core] INFO: PGW terminate...done (epc.c:96)
|
||||
04/07 16:46:27.402: [core] INFO: PCRF try to terminate (epc.c:47)
|
||||
04/07 16:46:27.403: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
|
||||
04/07 16:46:27.514: [core] INFO: PCRF terminate...done (epc.c:49)
|
||||
```
|
||||
108
docs/_docs/platform/01-debian-ubuntu.md
Normal file
108
docs/_docs/platform/01-debian-ubuntu.md
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: Build on Ubuntu/Debian
|
||||
---
|
||||
|
||||
### TUN device permissions
|
||||
---
|
||||
|
||||
To run nextepc with least privilege, the TUN device privilege should be a `crw-rw-rw-`(666). Otherwise, you need to run nextepc daemon as root. If the permission is not `crw-rw-rw-`(666), you may need to install [udev](https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html) package.
|
||||
|
||||
```bash
|
||||
$ ls -al /dev/net/tun
|
||||
crw-rw---- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
|
||||
|
||||
$ sudo apt install udev
|
||||
$ sudo systemctl start systemd-udevd (if '/lib/systemd/systemd-udevd' is not running)
|
||||
|
||||
$ ls -al /dev/net/tun
|
||||
crw-rw-rw- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
|
||||
```
|
||||
|
||||
Nevertheless, if the permission do not change, you can run nextepc with root privileges or change the permission using [chmod](https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html) as follows:
|
||||
|
||||
```bash
|
||||
$ sudo chmod 666 /dev/net/tun
|
||||
```
|
||||
|
||||
### Making TUN Permanent
|
||||
---
|
||||
|
||||
Write a configuration file for the TUN deivce.
|
||||
```bash
|
||||
$ sudo sh -c "cat << EOF > /etc/systemd/network/99-nextepc.netdev
|
||||
[NetDev]
|
||||
Name=pgwtun
|
||||
Kind=tun
|
||||
EOF"
|
||||
```
|
||||
|
||||
Create a TUN device. The interface name will be `pgwtun`.
|
||||
```bash
|
||||
$ sudo systemctl enable systemd-networkd
|
||||
$ sudo systemctl restart systemd-networkd
|
||||
|
||||
$ sudo apt install net-tools
|
||||
$ ifconfig pgwtun
|
||||
pgwtun: flags=4241<UP,POINTOPOINT,NOARP,MULTICAST> mtu 1500
|
||||
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
|
||||
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
|
||||
RX packets 0 bytes 0 (0.0 B)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 2 bytes 255 (255.0 B)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
```
|
||||
|
||||
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
|
||||
|
||||
```bash
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
1
|
||||
|
||||
$ sudo sh -c "echo 'net.ipv6.conf.pgwtun.disable_ipv6=0' > /etc/sysctl.d/30-nextepc.conf"
|
||||
$ sudo sysctl -p /etc/sysctl.d/30-nextepc.conf
|
||||
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
0
|
||||
```
|
||||
|
||||
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
|
||||
{: .notice--warning}
|
||||
|
||||
|
||||
You are now ready to set the IP address on TUN device.
|
||||
|
||||
```bash
|
||||
$ sudo sh -c "cat << EOF > /etc/systemd/network/99-nextepc.network
|
||||
[Match]
|
||||
Name=pgwtun
|
||||
[Network]
|
||||
Address=45.45.0.1/16
|
||||
Address=cafe::1/64
|
||||
EOF"
|
||||
```
|
||||
|
||||
Restart the TUN device
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart systemd-networkd
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
|
||||
|
||||
```bash
|
||||
$ ifconfig pgwtun
|
||||
pgwtun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||
inet 45.45.0.1 netmask 255.255.0.0 destination 45.45.0.1
|
||||
inet6 cafe::1 prefixlen 64 scopeid 0x0<global>
|
||||
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
|
||||
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
|
||||
RX packets 0 bytes 0 (0.0 B)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 20 bytes 2019 (2.0 KB)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
```
|
||||
|
||||
**Note:** On *Linux*, you should run `nextepc-pgwd` first to correctly verify the IP address of TUN device. Otherwise, the TUN device's IP address is not displayed by the [ifconfig](http://net-tools.sourceforge.net/man/ifconfig.8.html) command.
|
||||
{: .notice--warning}
|
||||
|
||||
145
docs/_docs/platform/02-centos.md
Normal file
145
docs/_docs/platform/02-centos.md
Normal file
@@ -0,0 +1,145 @@
|
||||
---
|
||||
title: CentOS
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **CentOS 7** Distribution.
|
||||
{: .blue}
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Create the MongoDB repository file.
|
||||
```bash
|
||||
$ sudo sh -c 'cat << EOF > /etc/yum.repos.d/mongodb-org-3.4.repo
|
||||
[mongodb-org-3.4]
|
||||
name=MongoDB Repository
|
||||
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.4/x86_64/
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
|
||||
EOF'
|
||||
```
|
||||
|
||||
Install MongoDB with Package Manager.
|
||||
```bash
|
||||
sudo yum -y install mongodb-org
|
||||
sudo systemctl start mongod (if '/usr/bin/mongod' is not running)
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Create the TUN device. Interface name will be `pgwtun`.
|
||||
```bash
|
||||
$ sudo yum -y install iproute
|
||||
$ sudo ip tuntap add name pgwtun mode tun
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
|
||||
|
||||
```bash
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
1
|
||||
|
||||
$ sudo -w net.ipv6.conf.pgwtun.disable_ipv6=0
|
||||
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
0
|
||||
```
|
||||
|
||||
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
|
||||
{: .notice--warning}
|
||||
|
||||
You are now ready to set the IP address on TUN device.
|
||||
|
||||
```bash
|
||||
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
$ sudo ip addr add cafe::1/64 dev pgwtun
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
```bash
|
||||
$ sudo ip link set pgwtun up
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo yum -y install git flex bison autoconf libtool lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel
|
||||
```
|
||||
|
||||
Configure EPEL package and install mongo-c-driver.
|
||||
```bash
|
||||
$ sudo yum -y install epel-release
|
||||
$ sudo yum -y install mongo-c-driver-devel
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make check
|
||||
```
|
||||
|
||||
You need to perform the **installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
### Building WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
|
||||
|
||||
```bash
|
||||
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
|
||||
$ sudo yum -y install nodejs
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ cd webui
|
||||
➜ webui git:(master) ✗ npm install
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
➜ webui git:(master) ✗ npm run dev
|
||||
```
|
||||
131
docs/_docs/platform/03-fedora.md
Normal file
131
docs/_docs/platform/03-fedora.md
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
title: Fedora
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **Fedora 27** Distribution.
|
||||
{: .blue}
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
```bash
|
||||
$ sudo dnf -y install mongodb-server
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Create the TUN device. Interface name will be `pgwtun`.
|
||||
```bash
|
||||
$ sudo dnf -y install iproute
|
||||
$ sudo ip tuntap add name pgwtun mode tun
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
|
||||
|
||||
```bash
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
1
|
||||
|
||||
$ sudo -w net.ipv6.conf.pgwtun.disable_ipv6=0
|
||||
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
0
|
||||
```
|
||||
|
||||
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
|
||||
{: .notice--warning}
|
||||
|
||||
You are now ready to set the IP address on TUN device.
|
||||
|
||||
```bash
|
||||
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
$ sudo ip addr add cafe::1/64 dev pgwtun
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
```bash
|
||||
$ sudo ip link set pgwtun up
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo dnf -y install git gcc flex bison autoconf libtool mongo-c-driver-devel lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel snappy-devel libyaml-devel
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make check
|
||||
```
|
||||
|
||||
You need to perform **the installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
### Building WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
|
||||
|
||||
```bash
|
||||
$ sudo dnf -y install nodejs
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ cd webui
|
||||
➜ webui git:(master) ✗ npm install
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
➜ webui git:(master) ✗ npm run dev
|
||||
```
|
||||
134
docs/_docs/platform/04-freebsd.md
Normal file
134
docs/_docs/platform/04-freebsd.md
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: FreeBSD
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **FreeBSD Relase 11.1**.
|
||||
{: .blue}
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
```bash
|
||||
$ sudo pkg install mongodb
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Configure the TUN device.
|
||||
```bash
|
||||
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.4 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
|
||||
```
|
||||
|
||||
Enable IP forwarding
|
||||
```bash
|
||||
$ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo pkg install git gcc bison gsed pkgconf autoconf automake libtool mongo-c-driver gnutls libgcrypt libidn libyaml
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ sudo make check
|
||||
```
|
||||
|
||||
You need to perform **the installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
acetcom@nextepc:~/nextepc$ sudo ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
acetcom@nextepc:~/nextepc$ sudo ./nextepc-epcd
|
||||
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
|
||||
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
|
||||
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
MongoDB URI: 'mongodb://localhost/nextepc'
|
||||
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
|
||||
...
|
||||
```
|
||||
|
||||
### Building WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
|
||||
|
||||
```bash
|
||||
$ sudo pkg install node
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ cd webui
|
||||
➜ webui git:(master) ✗ npm install
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
➜ webui git:(master) ✗ npm run dev
|
||||
```
|
||||
|
||||
146
docs/_docs/platform/05-macosx.md
Normal file
146
docs/_docs/platform/05-macosx.md
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: Mac OS X
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **macOS High Sierra 10.13.3**.
|
||||
{: .blue}
|
||||
|
||||
### Installing Homebrew
|
||||
---
|
||||
|
||||
```bash
|
||||
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
```
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with Package Manager.
|
||||
```bash
|
||||
$ brew install mongodb
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Install TUN/TAP driver
|
||||
- You can download it from [http://tuntaposx.sourceforge.net/](http://tuntaposx.sourceforge.net/)
|
||||
|
||||
Configure the TUN device.
|
||||
```bash
|
||||
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.4 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
|
||||
```
|
||||
|
||||
Enable IP forwarding & Masquerading
|
||||
```bash
|
||||
$ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
$ sudo sh -c "echo 'nat on {en0} from 45.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.nextepc"
|
||||
$ sudo pfctl -e -f /etc/pf.anchors/org.nextepc
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ brew install autoconf automake libtool gnu-sed mongo-c-driver libusrsctp gnutls libgcrypt libidn libyaml pkg-config
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ sudo make check
|
||||
```
|
||||
|
||||
You need to perform **the installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
acetcom@nextepc:~/nextepc$ sudo ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
acetcom@nextepc:~/nextepc$ sudo ./nextepc-epcd
|
||||
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
|
||||
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
|
||||
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
MongoDB URI: 'mongodb://localhost/nextepc'
|
||||
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
|
||||
...
|
||||
```
|
||||
|
||||
### Building WebUI of NextEPC
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
|
||||
|
||||
```bash
|
||||
$ brew install node
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ cd webui
|
||||
➜ webui git:(master) ✗ npm install
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
➜ webui git:(master) ✗ npm run dev
|
||||
```
|
||||
|
||||
157
docs/_docs/platform/06-ubuntu-trusty.md
Normal file
157
docs/_docs/platform/06-ubuntu-trusty.md
Normal file
@@ -0,0 +1,157 @@
|
||||
---
|
||||
title: Ubuntu (Trusty)
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **Ubuntu 14.04(Trusty)** Distribution.
|
||||
{: .blue}
|
||||
|
||||
## Getting MongoDB
|
||||
|
||||
Install MongoDB with package manager.
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install mongodb
|
||||
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
|
||||
```
|
||||
|
||||
### TUN device permissions
|
||||
---
|
||||
|
||||
To run nextepc with least privilege, the TUN device privilege should be a `crw-rw-rw-`(666). Otherwise, you need to run nextepc daemon as root. If the permission is not `crw-rw-rw-`(666), you may need to install [udev](https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html) package.
|
||||
|
||||
```bash
|
||||
$ ls -al /dev/net/tun
|
||||
crw-rw---- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
|
||||
|
||||
$ sudo apt install udev
|
||||
$ sudo systemctl start systemd-udevd (if '/lib/systemd/systemd-udevd' is not running)
|
||||
|
||||
$ ls -al /dev/net/tun
|
||||
crw-rw-rw- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
|
||||
```
|
||||
|
||||
Nevertheless, if the permission do not change, you can run nextepc with root privileges or change the permission using [chmod](https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html) as follows:
|
||||
|
||||
```bash
|
||||
$ sudo chmod 666 /dev/net/tun
|
||||
```
|
||||
|
||||
### Making TUN Permanent
|
||||
---
|
||||
|
||||
Write the configuration file for the TUN deivce.
|
||||
```bash
|
||||
$ sudo sh -c "cat << EOF > /etc/network/interfaces.d/nextepc
|
||||
auto pgwtun
|
||||
iface pgwtun inet static
|
||||
address 45.45.0.1
|
||||
netmask 255.255.0.0
|
||||
pre-up ip tuntap add name pgwtun mode tun
|
||||
post-down ip tuntap del name pgwtun mode tun
|
||||
iface pgwtun inet6 static
|
||||
address cafe::1
|
||||
netmask 64
|
||||
EOF"
|
||||
```
|
||||
|
||||
For loading TUN configuration,
|
||||
```bash
|
||||
$ sudo sh -c 'if ! grep "source-directory" /etc/network/interfaces | grep "/etc/network/interfaces.d" > /dev/null; then
|
||||
echo "source-directory /etc/network/interfaces.d" >> /etc/network/interfaces
|
||||
fi'
|
||||
```
|
||||
|
||||
Create the TUN device. Interface name will be `pgwtun`.
|
||||
```bash
|
||||
$ ifup pgwtun
|
||||
```
|
||||
|
||||
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
|
||||
|
||||
```bash
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
1
|
||||
|
||||
$ sudo sh -c "echo 'net.ipv6.conf.pgwtun.disable_ipv6=0' > /etc/sysctl.d/30-nextepc.conf"
|
||||
$ sudo sysctl -p /etc/sysctl.d/30-nextepc.conf
|
||||
|
||||
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
|
||||
0
|
||||
```
|
||||
|
||||
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
|
||||
{: .notice--warning}
|
||||
|
||||
|
||||
### Building NextEPC
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
|
||||
```bash
|
||||
sudo apt install git gcc flex bison make autoconf libtool pkg-config libsctp-dev libssl-dev libgnutls-dev libidn11-dev libyaml-dev
|
||||
```
|
||||
|
||||
Then, compile and install Mongo C Driver like the followings.
|
||||
```bash
|
||||
sudo apt-get -y install g++ libsasl2-dev
|
||||
tar xzf mongo-c-driver-1.8.0.tar.gz
|
||||
cd mongo-c-driver-1.8.0
|
||||
./configure --disable-automatic-init-and-cleanup
|
||||
make
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
```
|
||||
|
||||
Git clone with `--recursive` option.
|
||||
|
||||
```bash
|
||||
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
|
||||
```
|
||||
|
||||
To compile with autotools:
|
||||
|
||||
```bash
|
||||
➜ open5gs cd nextepc
|
||||
➜ nextepc git:(master) ✗ autoreconf -iv
|
||||
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
|
||||
➜ nextepc git:(master) ✗ make -j `nproc`
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make check
|
||||
```
|
||||
|
||||
You need to perform **the installation process**.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ make install
|
||||
```
|
||||
|
||||
Check whether the installation is correct.
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : SUCCESS
|
||||
volte_test : SUCCESS
|
||||
handover_test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./nextepc-epcd
|
||||
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
|
||||
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
|
||||
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
MongoDB URI: 'mongodb://localhost/nextepc'
|
||||
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
|
||||
...
|
||||
```
|
||||
443
docs/_docs/tutorial/01-your-first-lte.md
Normal file
443
docs/_docs/tutorial/01-your-first-lte.md
Normal file
@@ -0,0 +1,443 @@
|
||||
---
|
||||
title: Your First LTE
|
||||
head_inline: "<style> .blue { color: blue; } .bold { font-weight: bold; } </style>"
|
||||
---
|
||||
|
||||
This post is the perfect starting point for learning to build your own LTE network. View this lession as a guided introduction -- including the installation, configuration, and best practices that will ease your learning.
|
||||
|
||||
### Prerequisites
|
||||
---
|
||||
|
||||
First, you have to prepare USRP B200/B210 to run srsENB. However, please keep in mind that you would still need a fairly high-end PC (at least dual-core i5, better quad-core i7) with USB 3.0 to attach the USRP B200/B210.
|
||||
|
||||
For USRP B200/B210, you can use a GPS antenna for clock synchronization. Of course, it can work without a GPS antenna, but if you have that antenna, it's a good to have a window near your desk where you can put the small GPS patch antenna. In my case, a 1 to 2 meters antenna cable is used between desk/computer and the window.
|
||||
|
||||
This document will be described with the following equipment.
|
||||
- i5-8500 PC with Ubuntu 18.04(bionic)
|
||||
- USRP B200/B210 with USB 3.0
|
||||
- iPhone XS
|
||||
- sysmoUSIM-SJS1
|
||||
- 10Mhz GPS-DO(Optional)
|
||||
|
||||
### Overall Physical Setup
|
||||
---
|
||||
|
||||
If you want to use GPS antenna, setup your devices in the following order:
|
||||
|
||||
1. GPS antenna near window
|
||||
2. GPS antenna connected to "GPS ANT" connector of GPS-DO (SMA)
|
||||
3. 10MHz output (BNC) of GPS-DO connected to 10MHz input of USRP (SMA)
|
||||
4. GPS input of USRP open/unused!
|
||||
5. 1PPS input of USRP open/unused!
|
||||
6. GPS-DO powered via power supply
|
||||
|
||||
**Note:** When the GPS-DO acquires a lock on the GPS signal, a **GREEN** LED is displayed. GPS takes time to function normally. You also need to wait for the **RED** LED(ALARM) to turn off.
|
||||
{: .notice--warning}
|
||||
|
||||
Then, setup the USRP B200/B210 as below:
|
||||
1. **4x Small Antennas** should be connected to USRP Rx/Tx ports (RF-A/RF-B)
|
||||
2. USRP powered via power supply or over **USB 3.0**
|
||||
3. USRP **USB 3.0** port connected to your PC
|
||||
|
||||
### USIM Setup
|
||||
---
|
||||
|
||||
Bascially, you can learn how to use it in the [sysmoUSIM manual](https://www.sysmocom.de/manuals/sysmousim-manual.pdf) or on the [official homepage of pysim project](http://osmocom.org/projects/pysim/wiki). Let's take a quickstart guide for this experiment.
|
||||
|
||||
###### Install dependencies:
|
||||
```
|
||||
$ sudo apt-get install pcscd pcsc-tools libccid libpcsclite-dev python-pyscard
|
||||
```
|
||||
- Connect SIM card reader to your computer and insert programmable SIM card to the reader.
|
||||
|
||||
###### Check the status of connection by entering the following command:
|
||||
```
|
||||
$ pcsc_scan
|
||||
PC/SC device scanner
|
||||
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
|
||||
Using reader plug'n play mechanism
|
||||
Scanning present readers...
|
||||
0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Reader] 00
|
||||
|
||||
Sun May 26 14:26:12 2019
|
||||
Reader 0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Re
|
||||
Card state: Card inserted,
|
||||
ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
|
||||
...
|
||||
```
|
||||
- If SIM card reader is recognized then we can expect to print "Card inserted".
|
||||
|
||||
###### Get the code of PySIM with installing dependency:
|
||||
|
||||
```
|
||||
$ sudo apt-get install python-pyscard python-serial python-pip
|
||||
$ pip install pytlv
|
||||
$ git clone git://git.osmocom.org/pysim
|
||||
```
|
||||
|
||||
###### Read your SIM card:
|
||||
```
|
||||
$ ./pySim-read.py -p0 or ./pySim-read.py -p1
|
||||
Using PC/SC reader (dev=0) interface
|
||||
Reading ...
|
||||
ICCID: 8988211000000213010
|
||||
IMSI: 310789012345301
|
||||
SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffff
|
||||
...
|
||||
```
|
||||
|
||||
###### Program your SIM card like the followings:
|
||||
```
|
||||
./pySim-prog.py -p 0 -n NextEPC -a 62416296 -s 8988211000000213010 -i 310789012345301 -x 310 -y 789 -k 82E9053A1882085FF2C020359938DAE9 -o BFD5771AAF4F6728E9BC6EF2C2533BDB
|
||||
Using PC/SC reader (dev=0) interface
|
||||
Insert card now (or CTRL-C to cancel)
|
||||
Autodetected card type: sysmoUSIM-SJS1
|
||||
Generated card parameters :
|
||||
> Name : NextEPC
|
||||
> SMSP : e1ffffffffffffffffffffffff0581005155f5ffffffffffff000000
|
||||
> ICCID : 8988211000000213010
|
||||
> MCC/MNC : 310/789
|
||||
> IMSI : 310789012345301
|
||||
> Ki : 82E9053A1882085FF2C020359938DAE9
|
||||
> OPC : BFD5771AAF4F6728E9BC6EF2C2533BDB
|
||||
> ACC : None
|
||||
|
||||
Programming ...
|
||||
Done !
|
||||
```
|
||||
|
||||
**Note:** You should use your ADM value to program USIM card, not my ADM(-a 62416296).
|
||||
{: .notice--warning}
|
||||
|
||||
### Installation
|
||||
---
|
||||
|
||||
We will use *Ubuntu 18.04(Bionic)* installed PC.
|
||||
{: .blue .bold}
|
||||
|
||||
#### 1. USRP Hardware Driver
|
||||
|
||||
Most Linux distributions provide UHD as part of their package management. On *Debian and Ubuntu* systems, this will install the base UHD library, all headers and build-specific files, as well as utilities:
|
||||
|
||||
```bash
|
||||
$ sudo add-apt-repository ppa:ettusresearch/uhd
|
||||
$ sudo apt update
|
||||
$ sudo apt install libuhd-dev libuhd003 uhd-host
|
||||
```
|
||||
|
||||
After installing, you need to download the FPGA images packages by running _uhd images downloader_ on the command line (the actual path may differ based on your installation):
|
||||
|
||||
```bash
|
||||
$ sudo /usr/lib/uhd/utils/uhd_images_downloader.py
|
||||
```
|
||||
|
||||
#### 2. srsENB
|
||||
|
||||
On *Ubuntu 18.04(Bionic)*, one can install the required libraries with:
|
||||
|
||||
```bash
|
||||
$ sudo apt install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
|
||||
```
|
||||
|
||||
Download and build srsLTE:
|
||||
|
||||
```bash
|
||||
➜ git git clone https://github.com/srsLTE/srsLTE.git
|
||||
➜ git cd srsLTE
|
||||
➜ srsLTE git:(master) ✗ mkdir build
|
||||
➜ srsLTE git:(master) ✗ cd build
|
||||
➜ build git:(master) ✗ cmake ../
|
||||
➜ build git:(master) ✗ make
|
||||
➜ build git:(master) ✗ make test
|
||||
```
|
||||
|
||||
#### 3. NextEPC
|
||||
|
||||
The NextEPC package is available on the recent versions of *Ubuntu*.
|
||||
|
||||
```bash
|
||||
# Getting the authentication key
|
||||
$ sudo apt install wget
|
||||
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
|
||||
$ sudo apt-key add Release.key
|
||||
|
||||
# Installing NextEPC
|
||||
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs.list"
|
||||
$ sudo apt update
|
||||
$ sudo apt install nextepc
|
||||
```
|
||||
|
||||
The following shows how to install the Web UI of NextEPC.
|
||||
|
||||
```bash
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
$ curl -sL http://nextepc.org/static/webui/install | sudo -E bash -
|
||||
```
|
||||
|
||||
### Configuration & Running
|
||||
---
|
||||
|
||||
#### 1. NextEPC
|
||||
|
||||
When you purchase the sysmoUSIM, you will receive the following information via e-mail.
|
||||
|
||||
```
|
||||
Title : sysmocom SIM Card Details / AM93\PICK\00859
|
||||
|
||||
IMSI ICCID ACC PIN1 PUK1 PIN2 PUK2 Ki OPC ADM1 KIC1 KID1 KIK1
|
||||
...
|
||||
901700000017408 8988211000000174089 0100 3623 84724035 8774 57473966 B1233463AB9BC2AD2DB1830EB6417E7B 625150E2A943E3353DD23554101CAFD4 47190711 C865CAA0A54542333929B29B116F4375 7D7F65DCD99003C0A0D5D31CA3E5253E 5B27983AF628FC3FCB36B89300012944
|
||||
```
|
||||
|
||||
Here's my subscriber information from above.
|
||||
|
||||
```
|
||||
MCC/MNC : 901/70
|
||||
IMSI : 901700000017408
|
||||
K : B1233463AB9BC2AD2DB1830EB6417E7B
|
||||
OPc : 625150E2A943E3353DD23554101CAFD4
|
||||
```
|
||||
|
||||
If you programmed USIM using a card reader like me, you should use your SIM information.
|
||||
```
|
||||
MCC/MNC : 310/789
|
||||
IMSI : 310789012345301
|
||||
K : 82E9053A1882085FF2C020359938DAE9
|
||||
OPc : BFD5771AAF4F6728E9BC6EF2C2533BDB
|
||||
```
|
||||
|
||||
Connect to `http://localhost:3000` and login with **admin** account.
|
||||
|
||||
> Username : admin
|
||||
> Password : 1423
|
||||
|
||||
Then proceed as follows:
|
||||
|
||||
1. Go to `Subscriber` Menu.
|
||||
2. Click `+` Button to add a new subscriber.
|
||||
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
|
||||
4. Click `SAVE` Button
|
||||
|
||||
Modify [/etc/nextepc/mme.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/mme.conf.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC
|
||||
|
||||
```diff
|
||||
diff -u mme.conf.old mme.conf
|
||||
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
|
||||
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
|
||||
@@ -14,18 +14,20 @@
|
||||
mme:
|
||||
freeDiameter: mme.conf
|
||||
s1ap:
|
||||
+ addr: 127.0.1.100
|
||||
gtpc:
|
||||
+ addr: 127.0.1.100
|
||||
gummei:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
+ mcc: 310
|
||||
+ mnc: 789
|
||||
mme_gid: 2
|
||||
mme_code: 1
|
||||
tai:
|
||||
plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
- tac: 12345
|
||||
+ mcc: 310
|
||||
+ mnc: 789
|
||||
+ tac: 7
|
||||
security:
|
||||
integrity_order : [ EIA1, EIA2, EIA0 ]
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
```
|
||||
|
||||
S1AP/GTP-C IP address, PLMN ID, TAC are changed as follows.
|
||||
|
||||
```
|
||||
S1AP address : 127.0.1.100 - srsENB default value
|
||||
GTP-C address : 127.0.1.100 - Use loopback interface
|
||||
PLMN ID : MNC(310), MCC(789) - Programmed USIM with a card reader
|
||||
TAC : 7 - srsENB default value
|
||||
```
|
||||
|
||||
|
||||
The GTP-U IP address will be set to 127.0.0.2. To do this, modify [/etc/nextepc/sgw.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/sgw.conf.in) to set the GTP-U IP address.
|
||||
|
||||
```diff
|
||||
diff -u /etc/nextepc/sgw.conf.old /etc/nextepc/sgw.conf
|
||||
--- sgw.conf.old 2018-04-15 18:30:25.000000000 +0900
|
||||
+++ sgw.conf 2018-04-15 18:30:30.000000000 +0900
|
||||
@@ -14,3 +14,4 @@
|
||||
gtpc:
|
||||
addr: 127.0.0.2
|
||||
gtpu:
|
||||
+ addr: 127.0.0.2
|
||||
```
|
||||
|
||||
After changing conf files, please restart NextEPC daemons.
|
||||
|
||||
```bash
|
||||
$ sudo systemctl restart nextepc-mmed
|
||||
$ sudo systemctl restart nextepc-sgwd
|
||||
```
|
||||
|
||||
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
|
||||
|
||||
```bash
|
||||
### Check IP Tables
|
||||
$ sudo iptables -L
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain FORWARD (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Check NAT Tables
|
||||
$ sudo iptables -L -t nat
|
||||
Chain PREROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
|
||||
```
|
||||
|
||||
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
|
||||
{: .notice--danger}
|
||||
|
||||
#### 2. srsENB
|
||||
Change back to the srsENB source directory and copy the main config example as well as all additional config files for RR, SIB and DRB.
|
||||
|
||||
```bash
|
||||
➜ srsLTE git:(master) ✗ cp srsenb/enb.conf.example srsenb/enb.conf
|
||||
➜ srsLTE git:(master) ✗ cp srsenb/rr.conf.example srsenb/rr.conf
|
||||
➜ srsLTE git:(master) ✗ cp srsenb/sib.conf.example srsenb/sib.conf
|
||||
➜ srsLTE git:(master) ✗ cp srsenb/drb.conf.example srsenb/drb.conf
|
||||
```
|
||||
|
||||
You should check your phone frequency. If your phone does not support Band-3, you should use a different DL EARFCN value.
|
||||
|
||||
```diff
|
||||
--- enb.conf.example 2018-11-19 18:16:06.953631893 +0900
|
||||
+++ enb.conf 2019-04-08 11:15:18.051261318 +0900
|
||||
@@ -23,8 +23,8 @@
|
||||
cell_id = 0x01
|
||||
phy_cell_id = 1
|
||||
tac = 0x0007
|
||||
-mcc = 001
|
||||
-mnc = 01
|
||||
+mcc = 310
|
||||
+mnc = 789
|
||||
mme_addr = 127.0.1.100
|
||||
gtp_bind_addr = 127.0.1.1
|
||||
s1c_bind_addr = 127.0.1.1
|
||||
@@ -66,12 +66,13 @@
|
||||
# Default "auto". B210 USRP: 400 us, bladeRF: 0 us.
|
||||
#####################################################################
|
||||
[rf]
|
||||
-dl_earfcn = 3400
|
||||
+dl_earfcn = 1600
|
||||
tx_gain = 80
|
||||
rx_gain = 40
|
||||
|
||||
#device_name = auto
|
||||
#device_args = auto
|
||||
+device_args="clock=external"
|
||||
#time_adv_nsamples = auto
|
||||
#burst_preamble_us = auto
|
||||
```
|
||||
|
||||
PLMN ID, DL EARFCN, and Device Argument are updated as belows.
|
||||
|
||||
```
|
||||
PLMN ID : MNC(310), MCC(789) programmed USIM with a card reader
|
||||
DL EARFCN : Band-3 - from your Phone
|
||||
Device Argument : Clock source from external GPS-DO
|
||||
```
|
||||
|
||||
If you do not use the GPS-DO, you should use:
|
||||
```diff
|
||||
#device_name = auto
|
||||
-#device_args = auto
|
||||
+device_args = auto
|
||||
#time_adv_nsamples = auto
|
||||
#burst_preamble_us = auto
|
||||
```
|
||||
|
||||
Now, run the srsENB as follows:
|
||||
|
||||
```bash
|
||||
➜ srsLTE git:(master) ✗ cd srsenb/
|
||||
➜ srsenb git:(master) ✗ sudo ../build/srsenb/src/srsenb ./enb.conf
|
||||
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
|
||||
|
||||
--- Software Radio Systems LTE eNodeB ---
|
||||
|
||||
Reading configuration file ./enb.conf...
|
||||
-- Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex...
|
||||
Opening USRP with args: "",master_clock_rate=30.72e6
|
||||
-- Detected Device: B200
|
||||
-- Loading FPGA image: /usr/share/uhd/images/usrp_b200_fpga.bin... done
|
||||
-- Operating over 'USB 2'.
|
||||
-- Detecting internal GPSDO.... 'No GPSDO found'
|
||||
-- Initialize CODEC control...
|
||||
-- Initialize Radio control...
|
||||
-- Performing register loopback test... pass
|
||||
-- Performing CODEC loopback test... pass
|
||||
-- Asking for clock rate 30.720000 MHz...
|
||||
-- Actually got clock rate 30.720000 MHz.
|
||||
-- Performing timer loopback test... pass
|
||||
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
|
||||
Setting Sampling frequency 11.52 MHz
|
||||
|
||||
==== eNodeB started ===
|
||||
Type <t> to view trace
|
||||
```
|
||||
If you see the `No GPSDO found`, please exit the program with Ctrl-C.
|
||||
And also, if you see the `USB 2`, it will not be working properly.
|
||||
|
||||
The following console output is the correct result of srsENB.
|
||||
```bash
|
||||
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
|
||||
|
||||
--- Software Radio Systems LTE eNodeB ---
|
||||
|
||||
Reading configuration file ./enb.conf...
|
||||
Opening USRP with args: "",master_clock_rate=30.72e6
|
||||
-- Detected Device: B200
|
||||
-- Operating over USB 3.
|
||||
-- Initialize CODEC control...
|
||||
-- Initialize Radio control...
|
||||
-- Performing register loopback test... pass
|
||||
-- Performing CODEC loopback test... pass
|
||||
-- Asking for clock rate 30.720000 MHz...
|
||||
-- Actually got clock rate 30.720000 MHz.
|
||||
-- Performing timer loopback test... pass
|
||||
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
|
||||
Setting Sampling frequency 11.52 MHz
|
||||
|
||||
==== eNodeB started ===
|
||||
Type <t> to view trace
|
||||
```
|
||||
|
||||
### Turn on your eNodeB and Phone
|
||||
---
|
||||
|
||||
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
|
||||
- You can view the log at `/var/log/nextepc/*.log`.
|
||||
20
docs/_includes/disqus_comments.html
Normal file
20
docs/_includes/disqus_comments.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{% if page.comments != false and jekyll.environment == "production" %}
|
||||
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
var disqus_config = function () {
|
||||
this.page.url = '{{ page.url | absolute_url }}';
|
||||
this.page.identifier = '{{ page.url | absolute_url }}';
|
||||
};
|
||||
|
||||
(function() {
|
||||
var d = document, s = d.createElement('script');
|
||||
|
||||
s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';
|
||||
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
|
||||
{% endif %}
|
||||
42
docs/_includes/footer.html
Normal file
42
docs/_includes/footer.html
Normal file
@@ -0,0 +1,42 @@
|
||||
<footer id="site-footer">
|
||||
<div class="container">
|
||||
<div class="h5 pt-4">{{ site.title | escape }}</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col col-lg-3">
|
||||
<ul class="list-unstyled">
|
||||
<li class="text-secondary">
|
||||
{% if site.author %}
|
||||
{{ site.author | escape }}
|
||||
{% else %}
|
||||
{{ site.title | escape }}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% if site.email %}
|
||||
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
||||
<li><i><font size="2">(Please do not mail me directly for technical support. Instead, use <a href="https://github.com/{{ site.github_username }}/nextepc/issues">GitHub Issues</a>.)</font></i></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% if site.footer_icons %}
|
||||
<div class="col-6 col-lg-3">
|
||||
<ul class="list-unstyled">
|
||||
{% for footer_icon in site.footer_icons %}
|
||||
<li>
|
||||
<a href="{{ footer_icon.url }}">
|
||||
{% if footer_icon.icon %}
|
||||
{% capture icon %}{% include {{footer_icon.icon}} %}{% endcapture %}
|
||||
<span class="align-middle text-secondary pr-2">{{ icon | strip }}</span>{% endif %}<span>{{ footer_icon.username }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="col-12 col-lg">
|
||||
<p class="text-secondary text-justify">{{ site.description | escape }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</footer>
|
||||
10
docs/_includes/google-analytics.html
Normal file
10
docs/_includes/google-analytics.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.google_analytics }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
23
docs/_includes/head.html
Normal file
23
docs/_includes/head.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}">
|
||||
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
|
||||
<link rel="shortcut icon" href="{{ "/assets/favicon.ico" | relative_url }}">
|
||||
|
||||
{% if page.head_inline %}
|
||||
{{ page.head_inline }}
|
||||
{% endif %}
|
||||
|
||||
{% if jekyll.environment == 'production' and site.google_analytics %}
|
||||
{% include google-analytics.html %}
|
||||
{% endif %}
|
||||
|
||||
{% seo %}
|
||||
|
||||
{% include head-includes.html %}
|
||||
</head>
|
||||
24
docs/_includes/header.html
Normal file
24
docs/_includes/header.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<header id="nav-header" class="border-dark border-left-0 border-right-0">
|
||||
<div id="nav-container" class="container position-relative d-flex justify-content-between align-items-center">
|
||||
{% assign default_paths = site.pages | map: "path" %}
|
||||
{% assign page_paths = site.header_pages | default: default_paths %}
|
||||
<a class="h4 m-0 text-dark" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
|
||||
|
||||
{% if page_paths %}
|
||||
<nav id="nav-menu-container" class="text-right navbar-light">
|
||||
<input type="checkbox" id="nav-trigger" class="d-none"/>
|
||||
<label for="nav-trigger" id="nav-trigger-label" class="m-2 d-inline-block d-md-none navbar-toggler-icon">
|
||||
</label>
|
||||
|
||||
<div id="nav-menu" class="d-none d-md-block">
|
||||
{% for path in page_paths %}
|
||||
{% assign my_page = site.pages | where: "path", path | first %}
|
||||
{% if my_page.title %}
|
||||
<a class="text-dark ml-3 ml-md-0 p-2 d-block d-md-inline-block" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</nav>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
4
docs/_includes/icon-github.svg
Normal file
4
docs/_includes/icon-github.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg viewBox="0 0 16 16" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>GitHub</title>
|
||||
<path fill="currentColor" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1017 B |
39
docs/_layouts/allposts.html
Normal file
39
docs/_layouts/allposts.html
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
layout: page
|
||||
---
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% for post in site.posts %}
|
||||
|
||||
{% capture year %}{{ post.date | date: '%Y' }}{% endcapture %}
|
||||
|
||||
{% if forloop.first %}
|
||||
<h2 class="mt-0 h4">{{ year }}</h2>
|
||||
<table class="ml-4">
|
||||
{% elsif year != prev_year %}
|
||||
</table>
|
||||
<h2 class="h4">{{ year }}</h2>
|
||||
<table class="ml-4">
|
||||
{% endif %}
|
||||
|
||||
{% assign date_format = site.minima_reboot.date_format_short | default: "%b %-d" %}
|
||||
<tr>
|
||||
<td class="text-right align-top text-truncate"><time class="text-secondary" datetime="{{ post.date | date:"%Y-%m-%d" }}">{{ post.date | date: date_format }}</time></td>
|
||||
<td class="text-center align-top px-1">|</td>
|
||||
<td class="text-left align-top"><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title | escape }}</a></td>
|
||||
</tr>
|
||||
|
||||
{% if forloop.last %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% capture prev_year %}{{ year }}{% endcapture %}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
<div class="pt-3"></div>
|
||||
|
||||
{% if site.plugins contains "jekyll-feed" %}
|
||||
<a href="{{ "/feed.xml" | relative_url }}"><div id="rss-icon" class="mb-2"></div></a>
|
||||
{% endif %}
|
||||
10
docs/_layouts/compress.html
Normal file
10
docs/_layouts/compress.html
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
# Jekyll layout that compresses HTML
|
||||
# v3.0.4
|
||||
# http://jch.penibelst.de/
|
||||
# © 2014–2015 Anatol Broder
|
||||
# MIT License
|
||||
---
|
||||
|
||||
{% capture _LINE_FEED %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
||||
23
docs/_layouts/default.html
Normal file
23
docs/_layouts/default.html
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
layout: compress
|
||||
---
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ page.lang | default: site.lang | default: "en" }}">
|
||||
|
||||
{% include head.html %}
|
||||
|
||||
<body>
|
||||
|
||||
{% include header.html %}
|
||||
|
||||
<main aria-label="Content">
|
||||
<div class="container">
|
||||
{{ content }}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% include footer.html %}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
docs/_layouts/home.html
Normal file
52
docs/_layouts/home.html
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<header class="pt-3 mb-3">
|
||||
{{ content }}
|
||||
</header>
|
||||
|
||||
<div id="content">
|
||||
|
||||
{% if site.paginate %}
|
||||
{% assign posts = paginator.posts %}
|
||||
{% else %}
|
||||
{% assign posts = site.posts %}
|
||||
{% endif %}
|
||||
|
||||
<ul class="list-unstyled m-0">
|
||||
{% assign date_format = site.minima_reboot.date_format | default: "%b %-d, %Y" %}
|
||||
{% for post in posts %}
|
||||
<li class="py-2">
|
||||
<span class="text-secondary">{{ post.date | date: date_format }}</span>
|
||||
|
||||
<h1 class="mt-1 mb-3 h3">
|
||||
<a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
|
||||
</h1>
|
||||
|
||||
<div class="text-justify">
|
||||
{{ post.excerpt }}
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if site.paginate %}
|
||||
<nav class="py-1" aria-label="Blog page navigation">
|
||||
{% if paginator.previous_page %}
|
||||
<a href="{{ paginator.previous_page_path | relative_url }}">« Previous</a>
|
||||
{% endif %}
|
||||
|
||||
Page: {{ paginator.page }} of {{ paginator.total_pages }}
|
||||
|
||||
{% if paginator.next_page %}
|
||||
<a href="{{ paginator.next_page_path | relative_url }}">Next »</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
{% if site.plugins contains "jekyll-feed" %}
|
||||
<a href="{{ "/feed.xml" | relative_url }}"><div id="rss-icon" class="mb-2"></div></a>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
14
docs/_layouts/page.html
Normal file
14
docs/_layouts/page.html
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<article>
|
||||
|
||||
<header class="pt-4 pb-3">
|
||||
<h1>{{ page.title | escape }}</h1>
|
||||
</header>
|
||||
|
||||
<div id="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
</article>
|
||||
33
docs/_layouts/post.html
Normal file
33
docs/_layouts/post.html
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<article itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="pt-4 pb-3">
|
||||
<h1 itemprop="name headline">{{ page.title | escape }}</h1>
|
||||
<p class="text-secondary">
|
||||
{% if page.author %}
|
||||
{% if page.author_url %}
|
||||
<a href="{{ page.author_url }}">
|
||||
{% endif %}
|
||||
<span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>
|
||||
{% if page.author_url %}
|
||||
</a>
|
||||
{% endif %}
|
||||
•
|
||||
{% endif %}
|
||||
<time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
||||
{% assign date_format = site.minima_reboot.date_format | default: "%b %-d, %Y" %}
|
||||
{{ page.date | date: date_format }}
|
||||
</time>
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<div class="text-justify" itemprop="articleBody" id="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
{% if site.disqus.shortname %}
|
||||
{% include disqus_comments.html %}
|
||||
{% endif %}
|
||||
</article>
|
||||
25
docs/_pages/404.html
Normal file
25
docs/_pages/404.html
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
layout: default
|
||||
permalink: /404.html
|
||||
---
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
.container {
|
||||
margin: 10px auto;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
||||
}
|
||||
h1 {
|
||||
margin: 30px 0;
|
||||
font-size: 4em;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<h1>404</h1>
|
||||
|
||||
<p><strong>Page not found :(</strong></p>
|
||||
<p>The requested page could not be found.</p>
|
||||
</div>
|
||||
29
docs/_pages/about.md
Normal file
29
docs/_pages/about.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
layout: page
|
||||
title: About
|
||||
permalink: /about/
|
||||
---
|
||||
|
||||
NextEPC is a C-language Open Source implementation of the 3GPP Evolved Packet Core, i.e. the core network of an LTE network.
|
||||
|
||||
#### Supported Features
|
||||
---
|
||||
|
||||
- LTE release 14 complient
|
||||
- AES, Snow3G, ZUC algorithms for encryption
|
||||
- Support of USIM cards using Milenage
|
||||
- Multiple PDN support
|
||||
- S1/X2 Handover
|
||||
- IPv6 support
|
||||
- Supports several IMS servers with Rx interface.
|
||||
|
||||
#### Known Limitations
|
||||
---
|
||||
|
||||
- No OCS/OFCS
|
||||
- No NB-IoT
|
||||
- No eMBMS
|
||||
- No CS Fallback and SRVCC
|
||||
- No Roaming
|
||||
- No Emergency Call
|
||||
- No ePDG Gateway
|
||||
21
docs/_pages/docs.md
Normal file
21
docs/_pages/docs.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
layout: page
|
||||
title: Documentation
|
||||
permalink: /docs/
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
- User's Guide
|
||||
- [Quickstart](guide/01-quickstart)
|
||||
- [Building nextepc from Sources](guide/02-building-nextepc-from-sources)
|
||||
|
||||
- Tutorials
|
||||
- [Your First LTE](tutorial/01-your-first-lte)
|
||||
|
||||
- Platform Specific Notes
|
||||
- [Debian/Ubuntu](platform/01-debian-ubuntu)
|
||||
- [CentOS](platform/02-centos)
|
||||
- [Fedora](platform/03-fedora)
|
||||
- [FreeBSD](platform/04-freebsd)
|
||||
- [MacOSX](platform/05-macosx)
|
||||
- [Ubuntu(Trusty)](platform/06-ubuntu-trusty)
|
||||
490
docs/_pages/faq.md
Normal file
490
docs/_pages/faq.md
Normal file
@@ -0,0 +1,490 @@
|
||||
---
|
||||
layout: page
|
||||
title: FAQ
|
||||
permalink: /faq/
|
||||
---
|
||||
|
||||
#### Is it possible to setup IP/NAT table along with Docker?
|
||||
|
||||
The following is the default docker IP/NAT table.
|
||||
|
||||
```
|
||||
$ sudo iptables-save
|
||||
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
|
||||
*nat
|
||||
:PREROUTING ACCEPT [74:4820]
|
||||
:INPUT ACCEPT [4:208]
|
||||
:OUTPUT ACCEPT [49:3659]
|
||||
:POSTROUTING ACCEPT [49:3659]
|
||||
:DOCKER - [0:0]
|
||||
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
|
||||
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
|
||||
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
|
||||
-A DOCKER -i docker0 -j RETURN
|
||||
COMMIT
|
||||
# Completed on Sat Jun 1 23:43:50 2019
|
||||
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
|
||||
*filter
|
||||
:INPUT ACCEPT [651:514108]
|
||||
:FORWARD DROP [70:4612]
|
||||
:OUTPUT ACCEPT [590:63846]
|
||||
:DOCKER - [0:0]
|
||||
:DOCKER-ISOLATION-STAGE-1 - [0:0]
|
||||
:DOCKER-ISOLATION-STAGE-2 - [0:0]
|
||||
:DOCKER-USER - [0:0]
|
||||
-A FORWARD -j DOCKER-USER
|
||||
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
|
||||
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
||||
-A FORWARD -o docker0 -j DOCKER
|
||||
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
|
||||
-A FORWARD -i docker0 -o docker0 -j ACCEPT
|
||||
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
|
||||
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
|
||||
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
|
||||
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
|
||||
-A DOCKER-USER -j RETURN
|
||||
COMMIT
|
||||
# Completed on Sat Jun 1 23:43:50 2019
|
||||
```
|
||||
|
||||
Create **newtables** file as below.
|
||||
|
||||
```diff
|
||||
$ diff -u oldtables newtables
|
||||
--- oldtables 2019-06-01 23:43:50.354974226 +0900
|
||||
+++ newtables 2019-06-01 23:44:16.110931684 +0900
|
||||
@@ -8,6 +8,7 @@
|
||||
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
|
||||
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
|
||||
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
|
||||
+-A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
|
||||
-A DOCKER -i docker0 -j RETURN
|
||||
COMMIT
|
||||
# Completed on Sat Jun 1 23:43:50 2019
|
||||
@@ -26,6 +27,10 @@
|
||||
-A FORWARD -o docker0 -j DOCKER
|
||||
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
|
||||
-A FORWARD -i docker0 -o docker0 -j ACCEPT
|
||||
+-A FORWARD -o pgwtun -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
||||
+-A FORWARD -o pgwtun -j DOCKER
|
||||
+-A FORWARD -i pgwtun ! -o pgwtun -j ACCEPT
|
||||
+-A FORWARD -i pgwtun -o pgwtun -j ACCEPT
|
||||
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
|
||||
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
|
||||
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
|
||||
```
|
||||
|
||||
And then, apply **newtables** as below.
|
||||
```
|
||||
$ sudo iptables-restore < newtables
|
||||
```
|
||||
|
||||
The above operation is the same as described in the following manuals.
|
||||
```
|
||||
### Check IP Tables
|
||||
$ sudo iptables -L
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain FORWARD (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Check NAT Tables
|
||||
$ sudo iptables -L -t nat
|
||||
Chain PREROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain INPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
|
||||
```
|
||||
|
||||
#### How to use a different APN for each PGW
|
||||
|
||||
By default, MME selects the PGW as the first PGW node. To use a different APN for each PGW, specify gtpc.apn as the APN name. If the HSS uses WebUI to set the PGW IP for each UE, you can use a specific PGW node for each UE.
|
||||
|
||||
See the following example.
|
||||
|
||||
```
|
||||
### For reference, see `nextepc.conf`
|
||||
#------------------------ MME --------------------------
|
||||
#
|
||||
# o Two PGW are defined. 127.0.0.3:2123 is used.
|
||||
# [fe80::3%lo]:2123 is ignored.
|
||||
# gtpc:
|
||||
# - addr: 127.0.0.3
|
||||
# - addr: fe80::3%lo
|
||||
#
|
||||
# o One PGW is defined. if prefer_ipv4 is not true,
|
||||
# [fe80::3%lo] is selected.
|
||||
# gtpc:
|
||||
# - addr:
|
||||
# - 127.0.0.3
|
||||
# - fe80::3%lo
|
||||
#
|
||||
# o Two PGW are defined with a different APN.
|
||||
# - Note that if PGW IP for UE is configured in HSS,
|
||||
# the following configurion for this UE is ignored.
|
||||
# gtpc:
|
||||
# - addr: 127.0.0.3
|
||||
# apn: internet
|
||||
# - addr: 127.0.0.5
|
||||
# apn: volte
|
||||
#
|
||||
# o If APN is omitted, the default APN uses the first PGW node.
|
||||
# gtpc:
|
||||
# - addr: 127.0.0.3
|
||||
# - addr: 127.0.0.5
|
||||
# apn: volte
|
||||
#
|
||||
```
|
||||
|
||||
The IP address of the UE can also use a different UE pool depending on the APN.
|
||||
|
||||
```
|
||||
### For reference, see `nextepc.conf`
|
||||
#
|
||||
# <UE Pool>
|
||||
#
|
||||
# o IPv4 Pool
|
||||
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
#
|
||||
# ue_pool:
|
||||
# addr: 45.45.0.1/16
|
||||
#
|
||||
# o IPv4/IPv6 Pool
|
||||
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev pgwtun
|
||||
#
|
||||
# ue_pool:
|
||||
# - addr: 45.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
#
|
||||
#
|
||||
# o Specific APN(e.g 'volte') uses 45.46.0.1/16, cafe:2::1/64
|
||||
# All other APNs use 45.45.0.1/16, cafe:1::1/64
|
||||
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
# $ sudo ip addr add 45.46.0.1/16 dev pgwtun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev pgwtun
|
||||
# $ sudo ip addr add cafe:2::1/64 dev pgwtun
|
||||
#
|
||||
# ue_pool:
|
||||
# - addr: 45.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 45.46.0.1/16
|
||||
# apn: volte
|
||||
# - addr: cafe:2::1/64
|
||||
# apn: volte
|
||||
#
|
||||
# o Multiple Devices (default: pgwtun)
|
||||
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev pgwtun2
|
||||
# $ sudo ip addr add 45.46.0.1/16 dev pgwtun3
|
||||
# $ sudo ip addr add cafe:2::1/64 dev pgwtun3
|
||||
#
|
||||
# ue_pool:
|
||||
# - addr: 45.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# dev: pgwtun2
|
||||
# - addr: 45.46.0.1/16
|
||||
# apn: volte
|
||||
# dev: pgwtun3
|
||||
# - addr: cafe:2::1/64
|
||||
# apn: volte
|
||||
# dev: pgwtun3
|
||||
#
|
||||
```
|
||||
|
||||
#### How to connect MongoDB server
|
||||
|
||||
If you do not start MongoDB, you will get the following error:
|
||||
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testsimple
|
||||
04/09 15:42:34.817: [core] ERROR: Failed to conect to server [mongodb://localhost/nextepc] (context.c:326)
|
||||
04/09 15:42:34.817: [core] ERROR: app_initialize() failed (basic/abts-main.c:91)
|
||||
s1ap_message_test : -04/09 15:42:34.830: [s1ap] ERROR: Failed to decode S1AP-PDU[-1] (s1ap_encoder.c:41)
|
||||
04/09 15:42:34.830: [core] FATAL: ogs_log_vprintf: Assertion `domain' failed. (ogs-log.c:347)
|
||||
```
|
||||
|
||||
You can start MongoDB using systemctl.
|
||||
```bash
|
||||
$ sudo systemctl start mongodb
|
||||
```
|
||||
|
||||
#### Failing to run `./nextepc-epcd`
|
||||
|
||||
You might be getting the following error after running `./nextepc-epcd`.
|
||||
```bash
|
||||
➜ nextepc git:(master) ./nextepc-epcd
|
||||
04/09 15:41:02.600: [core] INFO: NextEPC daemon start (main.c:169)
|
||||
04/09 15:41:02.601: [core] ERROR: CHECK PERMISSION of Installation Directory... (application.c:144)
|
||||
04/09 15:41:02.601: [core] ERROR: Cannot create PID file:`/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid` (application.c:145)
|
||||
04/09 15:41:02.601: [core] WARNING: log_pid: should not be reached. (application.c:146)
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f9d5d26d71b]
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x9606)[0x563a4ba23606]
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x8640)[0x563a4ba22640]
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x81f3)[0x563a4ba221f3]
|
||||
[1] 9635 abort (core dumped) ./nextepc-epcd
|
||||
```
|
||||
|
||||
You should perform **the installation process**.
|
||||
|
||||
```bash
|
||||
$ make install
|
||||
```
|
||||
|
||||
#### I have some error when running `./test/testcomplex`
|
||||
|
||||
Did you see the following error after executing `testcomplex`?
|
||||
```bash
|
||||
➜ nextepc git:(master) ✗ ./test/testcomplex
|
||||
s1setup_test : SUCCESS
|
||||
attach_test : -Line 134: Condition is false, but expected true
|
||||
\04/09 15:49:09.285: [esm] FATAL: esm_handle_pdn_connectivity_request: Assertion `SECURITY_CONTEXT_IS_VALID(mme_ue)' failed. (esm_handler.c:29)
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f608518271b]
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/test/.libs/testcomplex(+0x92121)[0x55dc9e274121]
|
||||
/home/acetcom/Documents/git/open5gs/nextepc/test/.libs/testcomplex(+0x4f5b9)[0x55dc9e2315b9]
|
||||
```
|
||||
|
||||
|
||||
Remove all subscriber information using MongoDB Client
|
||||
```
|
||||
$ mongo
|
||||
> db.subscribers.find() ### Check the test subscriber
|
||||
> db.subscribers.drop() ### Remove all subscriber
|
||||
> db.subscribers.find() ### Check that all subscribers are empty
|
||||
```
|
||||
|
||||
Kill all processes.
|
||||
```bash
|
||||
$ ps -ef | grep testcomplex
|
||||
$ ps -ef | grep nextepc
|
||||
$ sudo pkill -9 testcomplex
|
||||
$ sudo pkill -9 nextepc-epcd ...
|
||||
```
|
||||
|
||||
Execute `testcomplex`
|
||||
```bash
|
||||
$ ./test/testcomplex
|
||||
```
|
||||
|
||||
#### My eNB does not support IPv6.
|
||||
|
||||
Your eNodeB don't have to support IPv6.
|
||||
|
||||
If the sgw.gtpu configuration does not have an IPv6 address, the eNodeB can use IPv4 to connect to the MME and SGW. If the sgw.gtpu setting has an IPv6 address, you can disable the IPv6 address as shown below.
|
||||
|
||||
```yaml
|
||||
parameter:
|
||||
no_ipv6: true
|
||||
```
|
||||
|
||||
**Note:** This parameter `no_ipv6` is only applied to EPC Elements such as MME, SGW, and so on. The parameter `no_ipv6` does not affect to UE. So, IPv6-enabled UE can connect to NextEPC LTE network.
|
||||
{: .notice--warning}
|
||||
|
||||
#### Unable to add new user by WebUI
|
||||
|
||||
It might be a CSRF token mismatch error.
|
||||
Please, delete corresponding cookies, cache, session data etc.
|
||||
|
||||
#### Change Domain from localdomain to anything else
|
||||
|
||||
You should configure the domain name on your computer. Otherwise, freeDiameter raise an error.
|
||||
|
||||
#### How many of UEs can NextEPC support?
|
||||
|
||||
See the [lib/base/types.h](https://github.com/{{ site.github_username }}/nextepc/blob/master/lib/base/types.h).
|
||||
|
||||
```
|
||||
#define MAX_NUM_OF_ENB 128
|
||||
#define MAX_NUM_OF_UE 128
|
||||
#define MAX_NUM_OF_SESS 4
|
||||
#define MAX_NUM_OF_BEARER 4
|
||||
#define MAX_NUM_OF_TUNNEL 3 /* Num of Tunnel per Bearer */
|
||||
#define MAX_NUM_OF_PF 16 /* Num of Packet Filter per Bearer */
|
||||
|
||||
#define MAX_POOL_OF_UE (MAX_NUM_OF_ENB * MAX_NUM_OF_UE)
|
||||
#define MAX_POOL_OF_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
|
||||
#define MAX_POOL_OF_BEARER (MAX_POOL_OF_SESS * MAX_NUM_OF_BEARER)
|
||||
#define MAX_POOL_OF_TUNNEL (MAX_POOL_OF_BEARER * MAX_NUM_OF_TUNNEL)
|
||||
#define MAX_POOL_OF_PF (MAX_POOL_OF_BEARER * MAX_NUM_OF_PF)
|
||||
#define MAX_POOL_OF_DIAMETER_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
|
||||
```
|
||||
|
||||
Currently, the number of UE is limited to `128*128`.
|
||||
|
||||
#### What is the Default Configuration?
|
||||
|
||||
- Network
|
||||
|
||||
```
|
||||
* MME
|
||||
S1AP: listen on all address avaiable in system
|
||||
GTP-C: listen on the first IP address in system
|
||||
DIAMETER: 127.0.0.2 (No TLS)
|
||||
|
||||
* SGW
|
||||
GTP-C: 127.0.0.2
|
||||
GTP-U: listen on the first IP address in system
|
||||
|
||||
* PGW
|
||||
GTP-C: Both 127.0.0.3 and [::1]
|
||||
GTP-U: Both 127.0.0.3 and [::1]
|
||||
DIAMETER: 127.0.0.3 (No TLS)
|
||||
|
||||
* HSS
|
||||
DIAMETER: 127.0.0.4 (No TLS)
|
||||
|
||||
* PCRF
|
||||
DIAMETER: 127.0.0.5 (No TLS)
|
||||
```
|
||||
|
||||
- GUMMEI, PLMN and TAC
|
||||
|
||||
```
|
||||
* GUMMEI
|
||||
PLMN ID - MNC: 001, MCC: 01
|
||||
MME Group : 2
|
||||
MME Code : 1
|
||||
|
||||
* TAI
|
||||
PLMN ID - MNC: 001, MCC: 01
|
||||
TAC : 12345
|
||||
```
|
||||
|
||||
- Security
|
||||
|
||||
```
|
||||
* Integrity : EIA1 - Snow 3G
|
||||
* Ciphering : EEA0 - Nothing
|
||||
```
|
||||
|
||||
- UE Network
|
||||
|
||||
```
|
||||
* IPv4 : 45.45.0.1/16
|
||||
* IPv6 : cafe::1/64
|
||||
```
|
||||
|
||||
- DNS
|
||||
|
||||
```
|
||||
* IPv4
|
||||
Primary : 8.8.8.8
|
||||
Secondary : 8.8.4.4
|
||||
|
||||
* IPv6
|
||||
Primary : 2001:4860:4860::8888
|
||||
Secondary : 2001:4860:4860::8844
|
||||
```
|
||||
|
||||
#### The parsing errors are caused by tab spaces in the configuration files.
|
||||
|
||||
YAML forbids tabs. You should use space instead of tab in NextEPC configuration file.
|
||||
|
||||
```markdown
|
||||
YAML FAQ: Why does YAML forbid tabs?
|
||||
|
||||
Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
|
||||
```
|
||||
|
||||
#### Cross compilation setup
|
||||
|
||||
By default, NextEPC is designed to support the Embedding System. To do so, we introduced pool-based memory management. Unfortunately, we have not tested NextEPC in an embedded environment. I tried to compile on the ARM architecture using Docker and run it with QEMU for your reference.
|
||||
|
||||
- We'll use Debian Docker Environment.
|
||||
|
||||
```bash
|
||||
$ git clone -r https://github.com/acetcom/nextepc
|
||||
$ cd nextepc/docker
|
||||
$ DIST=debian docker-compose run dev
|
||||
```
|
||||
|
||||
- In Docker Container
|
||||
|
||||
```bash
|
||||
acetcom@nextepc-dev:~$ sudo dpkg --add-architecture armel
|
||||
acetcom@nextepc-dev:~$ sudo apt-get install libsctp-dev:armel libyaml-dev:armel libgnutls28-dev:armel libgcrypt-dev:armel libssl-dev:armel libmongoc-dev:armel libbson-dev:armel
|
||||
acetcom@nextepc-dev:~$ sudo apt-get install crossbuild-essential-armel
|
||||
acetcom@nextepc-dev:~$ sudo apt-get install qemu
|
||||
|
||||
acetcom@nextepc-dev:~$ mkdir git
|
||||
acetcom@nextepc-dev:~$ cd git/
|
||||
acetcom@nextepc-dev:~/git$ git clone https://github.com/acetcom/nextepc
|
||||
acetcom@nextepc-dev:~/git$ cd nextepc/
|
||||
acetcom@nextepc-dev:~/git/nextepc$ autoreconf -if;./configure --prefix=`pwd`/install --host=arm-linux-gnueabi;make -j 2
|
||||
acetcom@nextepc-dev:~/git/nextepc$ make install
|
||||
acetcom@nextepc-dev:~/git/nextepc$ qemu-arm .libs/nextepc-mmed
|
||||
NextEPC daemon v0.3.10 - Oct 4 2018 13:24:24
|
||||
|
||||
[10/04 13:38:06.329] WARN: pid file /home/acetcom/git/nextepc/install/var/run/nextepc-mmed/pid overwritten -- Unclean shutdown of previous NextEPC run? (application.c:113)
|
||||
PID[55780] : '/home/acetcom/git/nextepc/install/var/run/nextepc-mmed/pid'
|
||||
File Logging : '/home/acetcom/git/nextepc/install/var/log/nextepc/nextepc.log'
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
qemu: Unsupported syscall: 345
|
||||
MongoDB URI : 'mongodb://mongodb/nextepc'
|
||||
Configuration : '/home/acetcom/git/nextepc/install/etc/nextepc/nextepc.conf'
|
||||
[10/04 13:38:06.400] MME try to initialize
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown QEMU_IFLA_INFO_KIND ipip
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown QEMU_IFLA_INFO_KIND ip6tnl
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown QEMU_IFLA_INFO_KIND ipip
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown QEMU_IFLA_INFO_KIND ip6tnl
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
Unknown host QEMU_IFLA type: 40
|
||||
Unknown host QEMU_IFLA type: 41
|
||||
[10/04 13:38:08.693] gtp_server() [172.20.0.2]:2123
|
||||
[10/04 13:38:08.696] gtp_client() [127.0.0.2]:2123
|
||||
Unsupported setsockopt level=132 optname=11
|
||||
[10/04 13:38:08.697] ERRR: Unable to subscribe to SCTP events: (92:Protocol not available) (unix/sctp.c:291)
|
||||
[10/04 13:38:08.699] ASSERT: !(rv == CORE_OK). (unix/sctp.c:33)
|
||||
[10/04 13:38:08.700] ERRR: sctp_server() [172.20.0.2]:36412 failed(92:Protocol not available) (unix/sctp.c:98)
|
||||
[10/04 13:38:08.701] ASSERT: !(rv == CORE_OK). (s1ap_sctp.c:35)
|
||||
[10/04 13:38:08.702] ASSERT: !(rv == CORE_OK). (s1ap_path.c:53)
|
||||
[10/04 13:38:08.703] ASSERT: !(rv == CORE_OK). (s1ap_path.c:28)
|
||||
[10/04 13:38:08.704] ERRR: Can't establish S1AP path (mme_sm.c:63)
|
||||
[10/04 13:38:08.708] MME initialize...done
|
||||
|
||||
|
||||
[10/04 13:38:08.710] INFO: NextEPC daemon start (main.c:157)
|
||||
```
|
||||
|
||||
The SCTP module is not included in the QEMU kernel. I believe that if the Linux kernel installed on your target platform contains an SCTP module, it will work normally.
|
||||
{: .notice--warning}
|
||||
5
docs/_pages/github.md
Normal file
5
docs/_pages/github.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: GitHub
|
||||
redirect_to:
|
||||
- https://github.com/open5gs/nextepc
|
||||
---
|
||||
5
docs/_pages/home.md
Normal file
5
docs/_pages/home.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
layout: allposts
|
||||
list_title: News
|
||||
permalink: /
|
||||
---
|
||||
9
docs/_posts/2017-02-01-programming-started.md
Normal file
9
docs/_posts/2017-02-01-programming-started.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Programming started."
|
||||
date: 2017-02-01 19:48:49 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
11
docs/_posts/2017-10-09-release-v0.1.0.md
Normal file
11
docs/_posts/2017-10-09-release-v0.1.0.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "First version released."
|
||||
date: 2017-10-09 11:03:15 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- Assets -- [v0.1.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.0.tar.gz)
|
||||
12
docs/_posts/2017-10-11-release-v0.1.1.md
Normal file
12
docs/_posts/2017-10-11-release-v0.1.1.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "v0.1.1 - Fix the bug related to Mongo C Driver"
|
||||
date: 2017-10-11 15:46:45 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- Fix the bug related to Mongo C Driver. [[More Info](https://github.com/open5gs/nextepc/commit/4245502ae287df9c457621b3f4cccb519c4d4878)]
|
||||
- Assets -- [v0.1.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.1.tar.gz)
|
||||
14
docs/_posts/2017-11-02-release-v0.2.0.md
Normal file
14
docs/_posts/2017-11-02-release-v0.2.0.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "v0.2.0 - Package Publish, Support More OS"
|
||||
date: 2017-11-02 17:21:21 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- Publish Debian/Ubuntu Package
|
||||
- Support FreeBSD and Mac OS X"
|
||||
|
||||
- Assets -- [v0.2.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.2.0.tar.gz)
|
||||
14
docs/_posts/2017-12-18-release-v0.3.0.md
Normal file
14
docs/_posts/2017-12-18-release-v0.3.0.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "v0.3.0 - IPv6 Support, Change Configuration File Format"
|
||||
date: 2017-12-18 20:57:47 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- IPv6 Support (Linux Only)
|
||||
- Change Configuration File (JSON -> YAML)
|
||||
|
||||
- Assets -- [v0.3.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.0.tar.gz)
|
||||
12
docs/_posts/2017-12-31-release-v0.3.1.md
Normal file
12
docs/_posts/2017-12-31-release-v0.3.1.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "v0.3.1 - Bug Fixes"
|
||||
date: 2017-12-31 22:20:39 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- Add Authentication Synch Failure ([#11](https://github.com/open5gs/nextepc/issues/11)) -- [eric80s](https://github.com/eric80s)
|
||||
- Assets -- [v0.3.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.1.tar.gz)
|
||||
20
docs/_posts/2018-02-13-release-v0.3.3.md
Normal file
20
docs/_posts/2018-02-13-release-v0.3.3.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: "v0.3.3 - Docker Support"
|
||||
date: 2018-02-13 04:50:34 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### New
|
||||
- Docker support ([#16](https://github.com/open5gs/nextepc/issues/16)) -- [amilenovic](https://github.com/amilenovic)
|
||||
|
||||
#### Bug fixes
|
||||
- Fix the BUG for MAC failure of authentication failure -- [#17](https://github.com/open5gs/nextepc/issues/17) from [razaborg](https://github.com/razaborg)
|
||||
- Fix the BUG for EPS attach type of Attach accept -- [#12](https://github.com/open5gs/nextepc/issues/12) from [pcminitech](https://github.com/pcminitech)
|
||||
|
||||
Download -- [v0.3.3.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.3.tar.gz)
|
||||
{: .notice--info}
|
||||
20
docs/_posts/2018-03-06-release-v0.3.5.md
Normal file
20
docs/_posts/2018-03-06-release-v0.3.5.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: "v0.3.5 - Support Network Name"
|
||||
date: 2018-03-06 12:43:34 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### New
|
||||
- Support Network Name ([#22](https://github.com/open5gs/nextepc/pull/22)) -- [medeiros405](https://github.com/medeiros405)
|
||||
|
||||
#### Bug fixes
|
||||
- Fix the BUG for security capabilities mismatch ([#27](https://github.com/open5gs/nextepc/issues/27)) -- [wayne43290](https://github.com/wayne43290)
|
||||
- Fix the BUG that SGW process is dead during paging process ([#18](https://github.com/open5gs/nextepc/issues/18)) -- [jackson040407](https://github.com/jackson040407)
|
||||
|
||||
Download -- [v0.3.5.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.5.tar.gz)
|
||||
{: .notice--info}
|
||||
15
docs/_posts/2018-03-21-release-v0.3.6.md
Normal file
15
docs/_posts/2018-03-21-release-v0.3.6.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "v0.3.6 - More S1AP Message"
|
||||
date: 2018-03-21 08:05:56 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
- Support eNB/MME Configuration Transfer, Error Indication ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
|
||||
- Increase SCTP recv buffer : 2048->8192 ([#35](https://github.com/open5gs/nextepc/issues/35)) -- [EugeneBogush](https://github.com/EugeneBogush)
|
||||
|
||||
Download -- [v0.3.6.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.6.tar.gz)
|
||||
{: .notice--info}
|
||||
12
docs/_posts/2018-04-14-release-v0.3.7.md
Normal file
12
docs/_posts/2018-04-14-release-v0.3.7.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "v0.3.7 - S1AP supports Release 14.4.0"
|
||||
date: 2018-04-14 15:04:04 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
---
|
||||
|
||||
Download -- [v0.3.7.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.7.tar.gz)
|
||||
{: .notice--info}
|
||||
23
docs/_posts/2018-06-03-release-v0.3.9.md
Normal file
23
docs/_posts/2018-06-03-release-v0.3.9.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: "v0.3.9 - Support NAS encryption"
|
||||
date: 2018-06-03 01:42:05 +0000
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### New
|
||||
- Support NAS encryption(EEA1/EEA2/EEA3)
|
||||
|
||||
#### Bug fixes
|
||||
- Confirm with 36.412 requirement of SCTP stream id ([#54](https://github.com/open5gs/nextepc/issues/54)) -- [brchiu](https://github.com/brchiu)
|
||||
- Fix to set correct timezone in UE ([#61](https://github.com/open5gs/nextepc/pull/61)) -- [medeiros405](https://github.com/medeiros405)
|
||||
- Fix to change MME's integrity order ([#64](https://github.com/open5gs/nextepc/issues/64)) -- [kewinrausch](https://github.com/kewinrausch)
|
||||
- Fix the bug for tracking area update ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
|
||||
- Fix the bug for indirect tunnel ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
|
||||
|
||||
Download -- [v0.3.9.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.9.tar.gz)
|
||||
{: .notice--info}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user