git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6389 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
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>
|
||||
|
||||
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 <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:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
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".
|
||||
|
||||
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
|
||||
<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>.
|
||||
@@ -1,6 +0,0 @@
|
||||
v0.1:
|
||||
- Build system
|
||||
- SCTP layer v0.1
|
||||
- S1AP layer v0.1
|
||||
v0.2:
|
||||
- Updated S1AP messages to RELEASE9 v9.8
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,21 +0,0 @@
|
||||
if HAVE_DOXYGEN
|
||||
directory = $(top_srcdir)/DOCS/Documentation
|
||||
|
||||
doc_DATA = $(directory)
|
||||
if HAVE_PDFLATEX
|
||||
doc_DATA += oaisim_mme.pdf
|
||||
endif
|
||||
$(directory): doxyfile.stamp
|
||||
|
||||
doxyfile.stamp:
|
||||
$(DOXYGEN) Doxyfile
|
||||
echo Timestamp > doxyfile.stamp
|
||||
|
||||
CLEANFILES = doxyfile.stamp
|
||||
|
||||
all-local: doxyfile.stamp
|
||||
clean-local:
|
||||
rm -f doxyfile.stamp
|
||||
rm -rf $(top_srcdir)/DOCS/Documentation/html
|
||||
rm -rf $(top_srcdir)/DOCS/Documentation/latex
|
||||
endif
|
||||
@@ -1,482 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = DOCS/DOXYGEN
|
||||
DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = Doxyfile
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(docdir)"
|
||||
DATA = $(doc_DATA)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@HAVE_DOXYGEN_TRUE@directory = $(top_srcdir)/DOCS/Documentation
|
||||
@HAVE_DOXYGEN_TRUE@doc_DATA = $(directory)
|
||||
@HAVE_DOXYGEN_TRUE@CLEANFILES = doxyfile.stamp
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DOCS/DOXYGEN/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu DOCS/DOXYGEN/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
@HAVE_DOXYGEN_TRUE@Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
|
||||
@HAVE_DOXYGEN_TRUE@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-docDATA: $(doc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-docDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
@HAVE_DOXYGEN_FALSE@all-local:
|
||||
all-am: Makefile $(DATA) all-local
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(docdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
@HAVE_DOXYGEN_FALSE@clean-local:
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-docDATA
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-docDATA
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool clean-local distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am \
|
||||
install-docDATA install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-docDATA
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@@HAVE_PDFLATEX_TRUE@ doc_DATA += oaisim_mme.pdf
|
||||
@HAVE_DOXYGEN_TRUE@$(directory): doxyfile.stamp
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@doxyfile.stamp:
|
||||
@HAVE_DOXYGEN_TRUE@ $(DOXYGEN) Doxyfile
|
||||
@HAVE_DOXYGEN_TRUE@ echo Timestamp > doxyfile.stamp
|
||||
|
||||
@HAVE_DOXYGEN_TRUE@all-local: doxyfile.stamp
|
||||
@HAVE_DOXYGEN_TRUE@clean-local:
|
||||
@HAVE_DOXYGEN_TRUE@ rm -f doxyfile.stamp
|
||||
@HAVE_DOXYGEN_TRUE@ rm -rf $(top_srcdir)/DOCS/Documentation/html
|
||||
@HAVE_DOXYGEN_TRUE@ rm -rf $(top_srcdir)/DOCS/Documentation/latex
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1 +0,0 @@
|
||||
SUBDIRS = DOXYGEN
|
||||
@@ -1,622 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = DOCS
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = DOXYGEN
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DOCS/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu DOCS/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
cscopelist-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
|
||||
cscopelist-recursive ctags-recursive install-am install-strip \
|
||||
tags-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist cscopelist-recursive ctags ctags-recursive \
|
||||
distclean distclean-generic distclean-libtool distclean-tags \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-recursive uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,28 +0,0 @@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_srcdir)/GTPV1-U/nw-gtpv1u/include \
|
||||
-I$(top_srcdir)/GTPV1-U/nw-gtpv1u/shared \
|
||||
-I$(top_srcdir)/UTILS \
|
||||
-I$(top_srcdir)/UTILS/TIMER
|
||||
|
||||
noinst_LTLIBRARIES = libgtpv1u.la
|
||||
|
||||
libgtpv1u_la_LDFLAGS = -all-static
|
||||
|
||||
libgtpv1u_la_SOURCES = \
|
||||
gtpv1_u_task.c gtpv1_u.h \
|
||||
nw-gtpv1u/shared/NwTypes.h \
|
||||
nw-gtpv1u/shared/NwUtils.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uError.h \
|
||||
nw-gtpv1u/shared/NwLog.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uIe.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uMsg.h \
|
||||
nw-gtpv1u/shared/NwGtpv1u.h \
|
||||
nw-gtpv1u/include/NwGtpv1uPrivate.h \
|
||||
nw-gtpv1u/include/NwGtpv1uLog.h \
|
||||
nw-gtpv1u/include/NwGtpv1uTrxn.h \
|
||||
nw-gtpv1u/include/NwGtpv1uTunnelEndPoint.h \
|
||||
nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c \
|
||||
nw-gtpv1u/src/NwGtpv1uTrxn.c \
|
||||
nw-gtpv1u/src/NwGtpv1uMsg.c \
|
||||
nw-gtpv1u/src/NwGtpv1u.c
|
||||
@@ -1,607 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = GTPV1-U
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depcomp
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libgtpv1u_la_LIBADD =
|
||||
am_libgtpv1u_la_OBJECTS = gtpv1_u_task.lo NwGtpv1uTunnelEndPoint.lo \
|
||||
NwGtpv1uTrxn.lo NwGtpv1uMsg.lo NwGtpv1u.lo
|
||||
libgtpv1u_la_OBJECTS = $(am_libgtpv1u_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
libgtpv1u_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libgtpv1u_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libgtpv1u_la_SOURCES)
|
||||
DIST_SOURCES = $(libgtpv1u_la_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_srcdir)/GTPV1-U/nw-gtpv1u/include \
|
||||
-I$(top_srcdir)/GTPV1-U/nw-gtpv1u/shared \
|
||||
-I$(top_srcdir)/UTILS \
|
||||
-I$(top_srcdir)/UTILS/TIMER
|
||||
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
noinst_LTLIBRARIES = libgtpv1u.la
|
||||
libgtpv1u_la_LDFLAGS = -all-static
|
||||
libgtpv1u_la_SOURCES = \
|
||||
gtpv1_u_task.c gtpv1_u.h \
|
||||
nw-gtpv1u/shared/NwTypes.h \
|
||||
nw-gtpv1u/shared/NwUtils.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uError.h \
|
||||
nw-gtpv1u/shared/NwLog.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uIe.h \
|
||||
nw-gtpv1u/shared/NwGtpv1uMsg.h \
|
||||
nw-gtpv1u/shared/NwGtpv1u.h \
|
||||
nw-gtpv1u/include/NwGtpv1uPrivate.h \
|
||||
nw-gtpv1u/include/NwGtpv1uLog.h \
|
||||
nw-gtpv1u/include/NwGtpv1uTrxn.h \
|
||||
nw-gtpv1u/include/NwGtpv1uTunnelEndPoint.h \
|
||||
nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c \
|
||||
nw-gtpv1u/src/NwGtpv1uTrxn.c \
|
||||
nw-gtpv1u/src/NwGtpv1uMsg.c \
|
||||
nw-gtpv1u/src/NwGtpv1u.c
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu GTPV1-U/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu GTPV1-U/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
libgtpv1u.la: $(libgtpv1u_la_OBJECTS) $(libgtpv1u_la_DEPENDENCIES) $(EXTRA_libgtpv1u_la_DEPENDENCIES)
|
||||
$(AM_V_CCLD)$(libgtpv1u_la_LINK) $(libgtpv1u_la_OBJECTS) $(libgtpv1u_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwGtpv1u.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwGtpv1uMsg.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwGtpv1uTrxn.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwGtpv1uTunnelEndPoint.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtpv1_u_task.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
NwGtpv1uTunnelEndPoint.lo: nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NwGtpv1uTunnelEndPoint.lo -MD -MP -MF $(DEPDIR)/NwGtpv1uTunnelEndPoint.Tpo -c -o NwGtpv1uTunnelEndPoint.lo `test -f 'nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NwGtpv1uTunnelEndPoint.Tpo $(DEPDIR)/NwGtpv1uTunnelEndPoint.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c' object='NwGtpv1uTunnelEndPoint.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NwGtpv1uTunnelEndPoint.lo `test -f 'nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c
|
||||
|
||||
NwGtpv1uTrxn.lo: nw-gtpv1u/src/NwGtpv1uTrxn.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NwGtpv1uTrxn.lo -MD -MP -MF $(DEPDIR)/NwGtpv1uTrxn.Tpo -c -o NwGtpv1uTrxn.lo `test -f 'nw-gtpv1u/src/NwGtpv1uTrxn.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uTrxn.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NwGtpv1uTrxn.Tpo $(DEPDIR)/NwGtpv1uTrxn.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nw-gtpv1u/src/NwGtpv1uTrxn.c' object='NwGtpv1uTrxn.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NwGtpv1uTrxn.lo `test -f 'nw-gtpv1u/src/NwGtpv1uTrxn.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uTrxn.c
|
||||
|
||||
NwGtpv1uMsg.lo: nw-gtpv1u/src/NwGtpv1uMsg.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NwGtpv1uMsg.lo -MD -MP -MF $(DEPDIR)/NwGtpv1uMsg.Tpo -c -o NwGtpv1uMsg.lo `test -f 'nw-gtpv1u/src/NwGtpv1uMsg.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uMsg.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NwGtpv1uMsg.Tpo $(DEPDIR)/NwGtpv1uMsg.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nw-gtpv1u/src/NwGtpv1uMsg.c' object='NwGtpv1uMsg.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NwGtpv1uMsg.lo `test -f 'nw-gtpv1u/src/NwGtpv1uMsg.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1uMsg.c
|
||||
|
||||
NwGtpv1u.lo: nw-gtpv1u/src/NwGtpv1u.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NwGtpv1u.lo -MD -MP -MF $(DEPDIR)/NwGtpv1u.Tpo -c -o NwGtpv1u.lo `test -f 'nw-gtpv1u/src/NwGtpv1u.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1u.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NwGtpv1u.Tpo $(DEPDIR)/NwGtpv1u.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nw-gtpv1u/src/NwGtpv1u.c' object='NwGtpv1u.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NwGtpv1u.lo `test -f 'nw-gtpv1u/src/NwGtpv1u.c' || echo '$(srcdir)/'`nw-gtpv1u/src/NwGtpv1u.c
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,36 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef GTPV1_U_H_
|
||||
#define GTPV1_U_H_
|
||||
|
||||
int gtpv1_u_init(const mme_config_t *mme_config);
|
||||
|
||||
#endif /* GTPV1_U_H_ */
|
||||
@@ -1,321 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "mme_config.h"
|
||||
#include "gtpv1_u.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uMsg.h"
|
||||
#include "NwLog.h"
|
||||
#include "timer.h"
|
||||
#include "intertask_interface.h"
|
||||
|
||||
#ifndef GTPU_DEBUG
|
||||
# define GTPU_DEBUG(x, args...) do { fprintf(stdout, "[GTPU][D]"x, ##args); } \
|
||||
while(0)
|
||||
#endif
|
||||
#ifndef GTPU_ERROR
|
||||
# define GTPU_ERROR(x, args...) do { fprintf(stdout, "[GTPU][E]"x, ##args); } \
|
||||
while(0)
|
||||
#endif
|
||||
|
||||
static NwGtpv1uStackHandleT gtpv1u_stack = 0;
|
||||
static pthread_t gtpv1u_task_thread;
|
||||
|
||||
static int gtpv1_u_send_init_udp(uint16_t port_number);
|
||||
static int gtpv1u_create_s1u_tunnel(void);
|
||||
static void* gtpv1u_thread(void *args);
|
||||
|
||||
NwGtpv1uRcT gtpv1_u_send_udp_msg(
|
||||
NwGtpv1uUdpHandleT udpHandle,
|
||||
NwU8T* dataBuf,
|
||||
NwU32T dataSize,
|
||||
NwU32T peerIpAddr,
|
||||
NwU32T peerPort);
|
||||
|
||||
NwGtpv1uRcT gtpv1_u_log_request(
|
||||
NwGtpv1uLogMgrHandleT hLogMgr,
|
||||
NwU32T logLevel,
|
||||
NwCharT* file,
|
||||
NwU32T line,
|
||||
NwCharT* logStr);
|
||||
|
||||
NwGtpv1uRcT gtpv1u_process_stack_req(
|
||||
NwGtpv1uUlpHandleT hUlp,
|
||||
NwGtpv1uUlpApiT *pUlpApi);
|
||||
|
||||
static int gtpv1_u_send_init_udp(uint16_t port_number) {
|
||||
// Create and alloc new message
|
||||
MessageDef *message_p;
|
||||
|
||||
message_p = alloc_new_message(TASK_GTPV1_U, TASK_UDP, UDP_INIT);
|
||||
if (message_p == NULL) return -1;
|
||||
|
||||
message_p->msg.udpInit.port = port_number;
|
||||
message_p->msg.udpInit.address = "0.0.0.0"; //ANY address
|
||||
|
||||
return send_msg_to_task(TASK_UDP, message_p);
|
||||
}
|
||||
|
||||
NwGtpv1uRcT gtpv1_u_log_request(NwGtpv1uLogMgrHandleT hLogMgr,
|
||||
NwU32T logLevel,
|
||||
NwCharT* file,
|
||||
NwU32T line,
|
||||
NwCharT* logStr) {
|
||||
|
||||
GTPU_DEBUG("%s\n", logStr);
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT gtpv1_u_send_udp_msg(
|
||||
NwGtpv1uUdpHandleT udpHandle,
|
||||
NwU8T* dataBuf,
|
||||
NwU32T dataSize,
|
||||
NwU32T peerIpAddr,
|
||||
NwU32T peerPort) {
|
||||
|
||||
// Create and alloc new message
|
||||
MessageDef *message_p;
|
||||
UdpDataReq *udpDataReq_p;
|
||||
|
||||
message_p = (MessageDef *)malloc(sizeof(MessageDef));
|
||||
|
||||
message_p->messageId = UDP_DATA_REQ;
|
||||
message_p->originTaskId = TASK_GTPV1_U;
|
||||
message_p->destinationTaskId = TASK_UDP;
|
||||
|
||||
udpDataReq_p = &message_p->msg.udpDataReq;
|
||||
|
||||
udpDataReq_p->peer_address = peerIpAddr;
|
||||
udpDataReq_p->peer_port = peerPort;
|
||||
udpDataReq_p->buffer = dataBuf;
|
||||
udpDataReq_p->buffer_length = dataSize;
|
||||
|
||||
return send_msg_to_task(TASK_UDP, message_p);
|
||||
}
|
||||
|
||||
/* Callback called when a gtpv1_u message arrived on UDP interface */
|
||||
NwGtpv1uRcT gtpv1u_process_stack_req(
|
||||
NwGtpv1uUlpHandleT hUlp,
|
||||
NwGtpv1uUlpApiT *pUlpApi) {
|
||||
|
||||
switch(pUlpApi->apiType)
|
||||
{
|
||||
/* Here there are two type of messages handled:
|
||||
* - T-PDU
|
||||
* - END-MARKER
|
||||
*/
|
||||
case NW_GTPV1U_ULP_API_RECV_TPDU:
|
||||
{
|
||||
NwU8T dataBuf[4096];
|
||||
NwU32T dataSize;
|
||||
if (NW_GTPV1U_OK != nwGtpv1uMsgGetTpdu(pUlpApi->apiInfo.recvMsgInfo.hMsg, dataBuf, &dataSize)) {
|
||||
GTPU_ERROR("Error while retrieving T-PDU");
|
||||
}
|
||||
GTPU_DEBUG("Received TPDU from gtpv1u stack %u!", pUlpApi->apiInfo.recvMsgInfo.teid);
|
||||
} break;
|
||||
default:
|
||||
GTPU_ERROR("Received undefined UlpApi (%02x) from gtpv1u stack!\n", pUlpApi->apiType);
|
||||
}
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
static int gtpv1u_create_s1u_tunnel(void) {
|
||||
/* Create a new nw-gtpv1-u stack req using API */
|
||||
NwGtpv1uUlpApiT stack_req;
|
||||
/* Local tunnel end-point identifier */
|
||||
static uint32_t s1u_teid = 1;
|
||||
int ret = 0;
|
||||
|
||||
MessageDef *message_p;
|
||||
|
||||
memset(&stack_req, 0, sizeof(NwGtpv1uUlpApiT));
|
||||
|
||||
stack_req.apiType = NW_GTPV1U_ULP_API_CREATE_TUNNEL_ENDPOINT;
|
||||
stack_req.apiInfo.createTunnelEndPointInfo.teid = s1u_teid;
|
||||
stack_req.apiInfo.createTunnelEndPointInfo.hUlpSession = 0;
|
||||
stack_req.apiInfo.createTunnelEndPointInfo.hStackSession = 0;
|
||||
|
||||
if (nwGtpv1uProcessUlpReq(gtpv1u_stack, &stack_req) != NW_GTPV1U_OK) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
message_p = alloc_new_message(TASK_GTPV1_U, TASK_SGW_LITE, SGW_S1U_ENDPOINT_CREATED);
|
||||
|
||||
message_p->msg.sgwS1UEndpointCreated.teid = s1u_teid;
|
||||
message_p->msg.sgwS1UEndpointCreated.status = ret;
|
||||
|
||||
ret = send_msg_to_task(TASK_SGW_LITE, message_p);
|
||||
|
||||
s1u_teid++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static NwGtpv1uRcT gtpv1u_start_timer_wrapper(
|
||||
NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwU32T timeoutSec,
|
||||
NwU32T timeoutUsec,
|
||||
NwU32T tmrType,
|
||||
void* timeoutArg,
|
||||
NwGtpv1uTimerHandleT* hTmr) {
|
||||
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
long timer_id;
|
||||
|
||||
timer_setup(timeoutSec, timeoutUsec, TASK_GTPV1_U, TIMER_ONE_SHOT, &timer_id);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static NwGtpv1uRcT gtpv1u_stop_timer_wrapper(
|
||||
NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwGtpv1uTimerHandleT hTmr) {
|
||||
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void* gtpv1u_thread(void *args) {
|
||||
while(1) {
|
||||
/* Trying to fetch a message from the message queue.
|
||||
* If the queue is empty, this function will block till a
|
||||
* message is sent to the task.
|
||||
*/
|
||||
MessageDef *received_message_p;
|
||||
receive_msg(TASK_GTPV1_U, &received_message_p);
|
||||
assert(received_message_p != NULL);
|
||||
switch(received_message_p->messageId) {
|
||||
case S1U_CREATE_TUNNEL:
|
||||
{
|
||||
long timer_id;
|
||||
|
||||
gtpv1u_create_s1u_tunnel();
|
||||
} break;
|
||||
case GTPV1U_DATA_REQ:
|
||||
{
|
||||
Gtpv1uDataReq *gtpv1u_data_req_p;
|
||||
gtpv1u_data_req_p = &received_message_p->msg.gtpv1uDataReq;
|
||||
nwGtpv1uProcessUdpReq(gtpv1u_stack, gtpv1u_data_req_p->buffer,
|
||||
gtpv1u_data_req_p->buffer_length,
|
||||
gtpv1u_data_req_p->port,
|
||||
gtpv1u_data_req_p->peer_addr);
|
||||
free(gtpv1u_data_req_p->buffer);
|
||||
} break;
|
||||
default:
|
||||
{
|
||||
GTPU_ERROR("Unkwnon message ID %d\n", received_message_p->messageId);
|
||||
} break;
|
||||
}
|
||||
free(received_message_p);
|
||||
received_message_p = NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int gtpv1_u_init(const mme_config_t *mme_config) {
|
||||
int ret;
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uUlpEntityT ulp;
|
||||
NwGtpv1uUdpEntityT udp;
|
||||
NwGtpv1uLogMgrEntityT log;
|
||||
NwGtpv1uTimerMgrEntityT tmr;
|
||||
|
||||
GTPU_DEBUG("Initializing GTPV1U interface\n");
|
||||
|
||||
ret = gtpv1_u_send_init_udp(mme_config->gtpv1_u_config.port_number);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Initializing GTPv1-U stack */
|
||||
if ((rc = nwGtpv1uInitialize(>pv1u_stack)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("Failed to setup nwGtpv1u stack %x\n", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((rc = nwGtpv1uSetLogLevel(gtpv1u_stack, NW_LOG_LEVEL_DEBG)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("Failed to setup loglevel for stack %x\n", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set the ULP API callback. Called once message have been processed by the
|
||||
* nw-gtpv1u stack.
|
||||
*/
|
||||
ulp.ulpReqCallback = gtpv1u_process_stack_req;
|
||||
|
||||
if ((rc = nwGtpv1uSetUlpEntity(gtpv1u_stack, &ulp)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("nwGtpv1uSetUlpEntity: %x", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* nw-gtpv1u stack requires an udp callback to send data over UDP.
|
||||
* We provide a wrapper to UDP task.
|
||||
*/
|
||||
udp.udpDataReqCallback = gtpv1_u_send_udp_msg;
|
||||
|
||||
if ((rc = nwGtpv1uSetUdpEntity(gtpv1u_stack, &udp)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("nwGtpv1uSetUdpEntity: %x", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
log.logReqCallback = gtpv1_u_log_request;
|
||||
|
||||
if ((rc = nwGtpv1uSetLogMgrEntity(gtpv1u_stack, &log)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("nwGtpv1uSetLogMgrEntity: %x", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Timer interface is more complicated as both wrappers doesn't send a message
|
||||
* to the timer task but call the timer API functions start/stop timer.
|
||||
*/
|
||||
tmr.tmrMgrHandle = 0;
|
||||
tmr.tmrStartCallback = gtpv1u_start_timer_wrapper;
|
||||
tmr.tmrStopCallback = gtpv1u_stop_timer_wrapper;
|
||||
|
||||
if ((rc = nwGtpv1uSetTimerMgrEntity(gtpv1u_stack, &tmr)) != NW_GTPV1U_OK) {
|
||||
GTPU_ERROR("nwGtpv1uSetTimerMgrEntity: %x", rc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pthread_create(>pv1u_task_thread, NULL, >pv1u_thread, NULL) < 0) {
|
||||
GTPU_ERROR("s1ap phtread_create: %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
GTPU_DEBUG("Initializing GTPV1U interface: DONE\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
Amit Chawre
|
||||
@@ -1,26 +0,0 @@
|
||||
Copyright (c) 2010-2011 Amit Chawre <http://www.amitchawre.net/contact.html>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. 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.
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __NW_GTPV1U_LOG_H__
|
||||
#define __NW_GTPV1U_LOG_H__
|
||||
|
||||
#include <stdio.h>
|
||||
#include "NwLog.h"
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uLog.h
|
||||
* @brief This header contains logging related definitions.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Log Macro Definition
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_LOG(_gtpv1uHandle, _logLevel, ...) \
|
||||
do { \
|
||||
if(((NwGtpv1uStackT*)(_gtpv1uHandle))->logLevel >= _logLevel) \
|
||||
{ \
|
||||
char _logBuf[1024]; \
|
||||
snprintf(_logBuf, 1024, __VA_ARGS__); \
|
||||
((NwGtpv1uStackT*)(_gtpv1uHandle))->logMgr.logReqCallback(((NwGtpv1uStackT*)_gtpv1uHandle)->logMgr.logMgrHandle, _logLevel, __FILE__, __LINE__, _logBuf);\
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define NW_ENTER(_gtpv1uHandle) \
|
||||
do { \
|
||||
NW_LOG(_gtpv1uHandle, NW_LOG_LEVEL_DEBG, "Entering '%s'", __func__);\
|
||||
} while(0)
|
||||
|
||||
#define NW_LEAVE(_gtpv1uHandle) \
|
||||
do { \
|
||||
NW_LOG(_gtpv1uHandle, NW_LOG_LEVEL_DEBG, "Leaving '%s'", __func__);\
|
||||
} while(0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_TYPES_H__ */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,230 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __NW_GTPV1U_PRIVATE_H__
|
||||
#define __NW_GTPV1U_PRIVATE_H__
|
||||
|
||||
#include "tree.h"
|
||||
#include "queue.h"
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwGtpv1uError.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uMsg.h"
|
||||
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uPrivate.h
|
||||
* @brief This header file contains nw-gtpv1u private definitions not to be
|
||||
* exposed to user application.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define NW_GTPV1U_MALLOC(_stack, _size, _mem, _type) \
|
||||
do { \
|
||||
if(((NwGtpv1uStackT*)(_stack))->memMgr.memAlloc && ((NwGtpv1uStackT*)(_stack))->memMgr.memFree )\
|
||||
{ \
|
||||
_mem = (_type) ((NwGtpv1uStackT*) (_stack))->memMgr.memAlloc(((NwGtpv1uStackT*) (_stack))->memMgr.hMemMgr, _size, __FILE__, __LINE__);\
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
_mem = (_type) malloc (_size); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* G T P U S T A C K O B J E C T T Y P E D E F I N I T I O N *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* GRPS Tunneling Protocol Stack Class Definition
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* gtpv1u stack class definition
|
||||
*/
|
||||
|
||||
typedef struct NwGtpv1uStack
|
||||
{
|
||||
NwU32T id;
|
||||
NwU32T seq;
|
||||
NwGtpv1uUlpEntityT ulp;
|
||||
NwGtpv1uUdpEntityT udp;
|
||||
NwGtpv1uMemMgrEntityT memMgr;
|
||||
NwGtpv1uTimerMgrEntityT tmrMgr;
|
||||
NwGtpv1uLogMgrEntityT logMgr;
|
||||
NwU32T logLevel;
|
||||
RB_HEAD( NwGtpv1uOutstandingTxSeqNumTrxnMap, NwGtpv1uTrxn) outstandingTxSeqNumMap;
|
||||
RB_HEAD( NwGtpv1uOutstandingRxSeqNumTrxnMap, NwGtpv1uTrxn) outstandingRxSeqNumMap;
|
||||
RB_HEAD(NwGtpv1uTunnelEndPointTMap, NwGtpv1uTunnelEndPoint) sessionMap;
|
||||
RB_HEAD(NwGtpv1uTunnelEndPointIdentifierMap, NwGtpv1uTunnelEndPoint) teidMap;
|
||||
} NwGtpv1uStackT;
|
||||
|
||||
/**
|
||||
* GTP Tunnel End Point class definition
|
||||
*/
|
||||
|
||||
typedef struct NwGtpv1uTunnelEndPoint
|
||||
{
|
||||
NwU32T teid; /**< Gtpu Tunnel End Point Identifier */
|
||||
NwU32T peerAddr; /**< Peer IP address for the session */
|
||||
NwGtpv1uStackT* pStack; /**< Pointer to the parent stack */
|
||||
NwGtpv1uUlpSessionHandleT hUlpSession; /**< ULP session handle for the session */
|
||||
RB_ENTRY (NwGtpv1uTunnelEndPoint) sessionMapRbtNode; /**< RB Tree Data Structure Node */
|
||||
struct NwGtpv1uTunnelEndPoint *next;
|
||||
} NwGtpv1uTunnelEndPointT;
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Timeout Info Type Definition
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* gtpv1u timeout info
|
||||
*/
|
||||
|
||||
typedef struct NwGtpv1uTimeoutInfo
|
||||
{
|
||||
NwGtpv1uStackHandleT hStack;
|
||||
void* timeoutArg;
|
||||
NwGtpv1uRcT (*timeoutCallbackFunc)(void*);
|
||||
} NwGtpv1uTimeoutInfoT;
|
||||
|
||||
/**
|
||||
* Start a transaction response timer
|
||||
*
|
||||
* @param[in] thiz Pointer to stack instance
|
||||
* @param[in] timeoutArg Arg to timeout function.
|
||||
* @param[out] phTmr Pointer to timer handle.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpStartTrxnPeerRspTimer(NwGtpv1uStackT* thiz, NwGtpv1uTimeoutInfoT* timeoutInfo, NwGtpv1uTimerHandleT* phTmr);
|
||||
|
||||
/**
|
||||
* Stop a transaction response timer
|
||||
*
|
||||
* @param[in] thiz Pointer to stack instance
|
||||
* @param[out] phTmr Pointer to timer handle.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpStopTrxnPeerRspTimer(NwGtpv1uStackT* thiz, NwGtpv1uTimerHandleT* phTmr);
|
||||
|
||||
|
||||
#define NW_GTPV1U_MAX_MSG_LEN (4096) /**< Maximum supported gtpv1u packet length including header */
|
||||
|
||||
/**
|
||||
* NwGtpv1uMsgT holds gtpv1u messages to/from the peer.
|
||||
*/
|
||||
typedef struct NwGtpv1uMsg
|
||||
{
|
||||
NwU8T version;
|
||||
NwU8T protocolType;
|
||||
NwU8T extHdrFlag;
|
||||
NwU8T seqNumFlag;
|
||||
NwU16T npduNumFlag;
|
||||
NwU32T msgType;
|
||||
NwU16T msgLen;
|
||||
NwU32T teid;
|
||||
NwU16T seqNum;
|
||||
NwU8T npduNum;
|
||||
NwU8T nextExtHdrType;
|
||||
NwU8T msgBuf[NW_GTPV1U_MAX_MSG_LEN];
|
||||
struct NwGtpv1uMsg* next;
|
||||
} NwGtpv1uMsgT;
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* R6/R4 Transaction Context Type Definition
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Transaction structure
|
||||
*/
|
||||
|
||||
typedef struct NwGtpv1uTrxn
|
||||
{
|
||||
NwU32T seqNum;
|
||||
NwU32T peerIp;
|
||||
NwU32T peerPort;
|
||||
NwU8T maxRetries;
|
||||
NwU8T t3Timer;
|
||||
NwGtpv1uTimerHandleT hRspTmr;
|
||||
NwGtpv1uTimeoutInfoT peerRspTimeoutInfo;
|
||||
NwGtpv1uStackT* pStack;
|
||||
NwGtpv1uTunnelEndPointT* pSession;
|
||||
NwU32T hUlpTrxn;
|
||||
NwGtpv1uMsgT* pMsg;
|
||||
RB_ENTRY (NwGtpv1uTrxn) outstandingTxSeqNumMapRbtNode; /**< RB Tree Data Structure Node */
|
||||
RB_ENTRY (NwGtpv1uTrxn) outstandingRxSeqNumMapRbtNode; /**< RB Tree Data Structure Node */
|
||||
struct NwGtpv1uTrxn* next;
|
||||
} NwGtpv1uTrxnT;
|
||||
|
||||
|
||||
/**
|
||||
* GTPv2 message header structure
|
||||
*/
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct NwGtpv1uMsgHeader
|
||||
{
|
||||
NwU8T PN:1;
|
||||
NwU8T S:1;
|
||||
NwU8T E:1;
|
||||
NwU8T spare:1;
|
||||
NwU8T PT:1;
|
||||
NwU8T version:3;
|
||||
NwU8T msgType;
|
||||
NwU16T msgLength;
|
||||
NwU32T teid;
|
||||
} NwGtpv1uMsgHeaderT;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_GTPV1U_PRIVATE_H__ */
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uTrxn.h
|
||||
* @author Amit Chawre
|
||||
* @brief
|
||||
*
|
||||
* This header file contains required definitions and functions
|
||||
* prototypes used by gtpv1u transactions.
|
||||
*
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __NW_GTPV1U_TRXN_H__
|
||||
#define __NW_GTPV1U_TRXN_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnNew( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_OUT NwGtpv1uTrxnT **ppTrxn);
|
||||
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnWithSeqNew( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwU32T seqNum,
|
||||
NW_OUT NwGtpv1uTrxnT **ppTrxn);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnDelete( NW_INOUT NwGtpv1uTrxnT **ppTrxn);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnNew( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_OUT NwGtpv1uTrxnT **ppTrxn);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnDelete( NW_INOUT NwGtpv1uTrxnT **pthiz);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnCreateAndSendMsg( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwGtpv1uTrxnT *pTrxn,
|
||||
NW_IN NwU32T peerIp,
|
||||
NW_IN NwU32T peerPort,
|
||||
NW_IN NwGtpv1uMsgT *pMsg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_GTPV1U_TRXN_H__ */
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwUtils.h"
|
||||
#include "NwGtpv1uError.h"
|
||||
#include "NwGtpv1uPrivate.h"
|
||||
#include "NwGtpv1uMsg.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uLog.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __NW_GTPV1U_CONNECTION_H__
|
||||
#define __NW_GTPV1U_CONNECTION_H__
|
||||
|
||||
/**
|
||||
Constructor
|
||||
|
||||
@return Pointer to session on success, NULL n failure.
|
||||
*/
|
||||
|
||||
NwGtpv1uTunnelEndPointT*
|
||||
nwGtpTunnelEndPointNew(struct NwGtpv1uStack* pStack);
|
||||
|
||||
/**
|
||||
Destructor
|
||||
|
||||
@param[in] thiz: Pointer to session
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpTunnelEndPointDestroy(struct NwGtpv1uStack* pStack, NwGtpv1uTunnelEndPointT* thiz);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpSessionSendMsgApiToUlpEntity(NwGtpv1uTunnelEndPointT* thiz,
|
||||
NwGtpv1uMsgT *pMsg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,630 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __NW_GTPV1U_H__
|
||||
#define __NW_GTPV1U_H__
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "NwTypes.h"
|
||||
#include "NwGtpv1uError.h"
|
||||
|
||||
/** @mainpage
|
||||
|
||||
@section intro Introduction
|
||||
|
||||
nw-gtpv1u library is a free and open source implementation of GPRS Tunneling
|
||||
protocol v2 user plane also known as eGTP-U based on 3GPP TS 29.281 V9.3.0.
|
||||
The library is published under BSD three clause license.
|
||||
|
||||
@section scope Scope
|
||||
|
||||
The stack library also does basic tasks like packet/header validation,
|
||||
retransmission, duplicate detection and message parsing.
|
||||
|
||||
@section design Design Philosophy
|
||||
|
||||
The stack is fully-asynchronous in design for compatibility with event loop
|
||||
mechanisms such as select, poll, etc. and can also be used for multi-threaded
|
||||
applications. It should compile on Linux, *BSD, Mac OS X, Solaris and Windows
|
||||
(cygwin).
|
||||
|
||||
The stack is designed for high portability not only for the hardware and OS it will
|
||||
run on but also for the application software that uses it. The stack doesn't mandate
|
||||
conditions on the user application architecture or design. The stack relies on
|
||||
the user application for infrastructure utilities such as I/O, timers,
|
||||
logs and multithreading. This realized by using callback mechanisms and enables the
|
||||
stack library to seamlessly integrate without or very little changes to the existing
|
||||
application framework.
|
||||
|
||||
The stack architecture builds upon following mentioned entities that are external to it.
|
||||
|
||||
User Layer Protocol (ULP) Entity:
|
||||
This layer implements the intelligent logic for the application and sits on top of the
|
||||
stack.
|
||||
|
||||
UDP Entity:
|
||||
This is the layer below the stack and is responsible for UDP I/O with the stack and network.
|
||||
It may or may not be housed in ULP.
|
||||
|
||||
Timer Manager Entity:
|
||||
Timer Manager Entity provides the stack with infrastructure for timer CRUD operations.
|
||||
|
||||
Log Manager Entity:
|
||||
Log Manager Entity provides the stack with callbacks for logging operations. It may
|
||||
or may not be housed in ULP.
|
||||
|
||||
The application may implement all above entities as a single or multiple object.
|
||||
|
||||
@section applications Applications and Usage
|
||||
|
||||
Please refer sample applications under 'test-app' directory for usage examples.
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file NwGtpv1u.h
|
||||
* @author Amit Chawre
|
||||
* @brief
|
||||
*
|
||||
* This header file contains all required definitions and functions
|
||||
* prototypes for using nw-gtpv1u library.
|
||||
*
|
||||
**/
|
||||
|
||||
#define NW_GTPU_VERSION (0x01)
|
||||
#define NW_GTP_PROTOCOL_TYPE_GTP (0x01)
|
||||
#define NW_GTP_PROTOCOL_TYPE_GTP_PRIME (0x00)
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* S H A R E D A P I M A C R O S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_GTP_ECHO_REQ (1)
|
||||
#define NW_GTP_ECHO_RSP (2)
|
||||
#define NW_GTP_ERROR_INDICATION (26)
|
||||
#define NW_GTP_SUPPORTED_EXTENSION_HEADER_INDICATION (31)
|
||||
#define NW_GTP_END_MARKER (254)
|
||||
#define NW_GTP_GPDU (255)
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Opaque Gtpv2 Stack Handles
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
typedef NwPtrT NwGtpv1uStackHandleT; /**< Gtpv2 Stack Handle */
|
||||
typedef NwPtrT NwGtpv1uUlpHandleT; /**< Gtpv2 Stack Ulp Entity Handle */
|
||||
typedef NwPtrT NwGtpv1uUdpHandleT; /**< Gtpv2 Stack Udp Entity Handle */
|
||||
typedef NwPtrT NwGtpv1uMemMgrHandleT; /**< Gtpv2 Stack Mem Manager Handle */
|
||||
typedef NwPtrT NwGtpv1uTimerMgrHandleT; /**< Gtpv2 Stack Timer Manager Handle */
|
||||
typedef NwPtrT NwGtpv1uLogMgrHandleT; /**< Gtpv2 Stack Log Mnagaer Handle */
|
||||
typedef NwPtrT NwGtpv1uTimerHandleT; /**< Gtpv2 Stack Timer Handle */
|
||||
typedef NwPtrT NwGtpv1uMsgHandleT; /**< Gtpv2 Msg Handle */
|
||||
|
||||
typedef struct NwGtpv1uStackConfig
|
||||
{
|
||||
NwU16T udpSrcPort;
|
||||
} NwGtpv1uStackConfigT;
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* S T A C K A P I D E F I N I T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Gtpv2 Stack ULP API type definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* APIs types between ULP and Stack
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
/* APIs from ULP to stack */
|
||||
|
||||
NW_GTPV1U_ULP_API_CREATE_TUNNEL_ENDPOINT = 0x00000000, /**< Create a local teid context on stack */
|
||||
NW_GTPV1U_ULP_API_DESTROY_TUNNEL_ENDPOINT, /**< Delete a local teid context on stack */
|
||||
NW_GTPV1U_ULP_API_INITIAL_REQ, /**< Send a Initial Request over a session */
|
||||
NW_GTPV1U_ULP_API_TRIGGERED_REQ, /**< Send a Initial Request over a session */
|
||||
NW_GTPV1U_ULP_API_TRIGGERED_RSP, /**< Send a Trigger Response over a session */
|
||||
NW_GTPV1U_ULP_API_SEND_TPDU, /**< Send a T-PDU message over teid context */
|
||||
|
||||
/* APIs from stack to ULP */
|
||||
|
||||
NW_GTPV1U_ULP_API_RECV_TPDU, /**< Receive a gtpv1u T-PDU from stack */
|
||||
NW_GTPV1U_ULP_API_RECV_MSG, /**< Receive a gtpv1u message from stack */
|
||||
NW_GTPV1U_ULP_API_RSP_FAILURE, /**< Rsp failure for gtpv2 message from stack */
|
||||
|
||||
/* Do not add below this */
|
||||
|
||||
NW_GTPV1U_ULP_API_END = 0xFFFFFFFF,
|
||||
} NwGtpv1uUlpApiTypeT;
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Gtpv2 Stack API information elements definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
typedef NwU32T NwGtpv1uStackSessionHandleT;/**< Gtpv2 Stack session Handle */
|
||||
typedef NwU8T NwGtpv1uMsgTypeT; /**< Gtpv2 Msg Type */
|
||||
typedef NwU32T NwGtpv1uTrxnHandleT; /**< Gtpv2 Transaction Handle */
|
||||
typedef NwU32T NwGtpv1uUlpTrxnHandleT; /**< Gtpv2 Ulp Transaction Handle */
|
||||
typedef NwU32T NwGtpv1uUlpSessionHandleT; /**< Gtpv2 Ulp session Handle */
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* creating a session.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwU32T teid;
|
||||
NW_IN NwGtpv1uUlpSessionHandleT hUlpSession;
|
||||
NW_OUT NwGtpv1uStackSessionHandleT hStackSession;
|
||||
} NwGtpv1uCreateTunnelEndPointT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* destroying a session.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uStackSessionHandleT hStackSessionHandle;
|
||||
} NwGtpv1uDestroyTunnelEndPointT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* sending a Gtpv1u initial message.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uUlpTrxnHandleT hUlpTrxn;
|
||||
NW_IN NwU32T peerIp;
|
||||
NW_IN NwU32T peerPort;
|
||||
NW_IN NwU8T flags;
|
||||
NW_IN NwU32T teid;
|
||||
} NwGtpv1uInitialReqInfoT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* sending a Gtpv1u triggered response message.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uUlpTrxnHandleT hUlpTrxn;
|
||||
NW_IN NwU32T peerIp;
|
||||
NW_IN NwU32T peerPort;
|
||||
NW_IN NwU8T flags;
|
||||
NW_IN NwU32T teid;
|
||||
NW_IN NwU32T seqNum;
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg;
|
||||
} NwGtpv1uTriggeredRspInfoT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* sending a Gtpv1u triggered request message.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uUlpTrxnHandleT hUlpTrxn;
|
||||
NW_IN NwU32T peerIp;
|
||||
NW_IN NwU32T peerPort;
|
||||
NW_IN NwU8T flags;
|
||||
NW_IN NwU32T teid;
|
||||
NW_IN NwU32T seqNum;
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg;
|
||||
} NwGtpv1uTriggeredReqInfoT;
|
||||
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* sending a Gtpv2 message over a session.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwU32T teid;
|
||||
NW_IN NwU32T ipAddr;
|
||||
NW_IN NwU8T flags;
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg;
|
||||
} NwGtpv1uSendtoInfoT;
|
||||
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* sending a Gtpv2 message over a session.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_OUT NwGtpv1uStackSessionHandleT hStackSessionHandle;
|
||||
NW_INOUT NwGtpv1uTrxnHandleT hTrxn;
|
||||
NW_IN NwGtpv1uUlpTrxnHandleT hUlpTrxn;
|
||||
NW_IN NwGtpv1uMsgTypeT msgType;
|
||||
NW_IN NwU8T flags;
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg;
|
||||
} NwGtpv1uSendMsgInfoT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* receiving a Gtpv2 message over a session from stack.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uUlpSessionHandleT hUlpSession;
|
||||
NW_IN NwGtpv1uUlpTrxnHandleT hUlpTrxn;
|
||||
NW_IN NwU32T teid;
|
||||
NW_IN NwU32T peerIp;
|
||||
NW_IN NwU32T peerPort;
|
||||
NW_IN NwU32T msgType; /**< Message type */
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg; /**< Gtp Message handle */
|
||||
} NwGtpv1uRecvMsgInfoT;
|
||||
|
||||
/**
|
||||
* API information elements between ULP and Stack for
|
||||
* receiving a Gtpv2 message over a session from stack.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NW_IN NwGtpv1uUlpSessionHandleT hUlpSession;
|
||||
NW_IN NwGtpv1uTrxnHandleT hTrxn;
|
||||
} NwGtpv1uNackInfoT;
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Gtpv2 Stack API structure definition
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* API structure between ULP and Stack
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uUlpApiTypeT apiType;
|
||||
NwGtpv1uMsgHandleT hMsg;
|
||||
union
|
||||
{
|
||||
NwGtpv1uCreateTunnelEndPointT createTunnelEndPointInfo;
|
||||
NwGtpv1uDestroyTunnelEndPointT destroyTunnelEndPointInfo;
|
||||
NwGtpv1uInitialReqInfoT initialReqInfo;
|
||||
NwGtpv1uTriggeredRspInfoT triggeredRspInfo;
|
||||
NwGtpv1uTriggeredReqInfoT triggeredReqInfo;
|
||||
NwGtpv1uSendtoInfoT sendtoInfo;
|
||||
NwGtpv1uSendMsgInfoT sendMsgInfo;
|
||||
NwGtpv1uRecvMsgInfoT recvMsgInfo;
|
||||
NwGtpv1uNackInfoT nackMsgInfo;
|
||||
} apiInfo;
|
||||
} NwGtpv1uUlpApiT;
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* S T A C K E N T I T I E S D E F I N I T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* ULP Entity Definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Gtpv2 ULP entity definition
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uUlpHandleT hUlp;
|
||||
NwGtpv1uRcT (*ulpReqCallback) ( NW_IN NwGtpv1uUlpHandleT hUlp,
|
||||
NW_IN NwGtpv1uUlpApiT *pUlpApi);
|
||||
} NwGtpv1uUlpEntityT;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* UDP Entity Definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Gtpv2 UDP entity definition
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uUdpHandleT hUdp;
|
||||
NwGtpv1uRcT (*udpDataReqCallback) ( NW_IN NwGtpv1uUdpHandleT udpHandle,
|
||||
NW_IN NwU8T* dataBuf,
|
||||
NW_IN NwU32T dataSize,
|
||||
NW_IN NwU32T peerIP,
|
||||
NW_IN NwU32T peerPort);
|
||||
} NwGtpv1uUdpEntityT;
|
||||
|
||||
/**
|
||||
* Gtpv1u Memory Manager entity definition
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uMemMgrHandleT hMemMgr;
|
||||
void* (*memAlloc)( NW_IN NwGtpv1uMemMgrHandleT hMemMgr,
|
||||
NW_IN NwU32T memSize,
|
||||
NW_IN NwCharT* fileName,
|
||||
NW_IN NwU32T lineNumber);
|
||||
|
||||
void (*memFree) ( NW_IN NwGtpv1uMemMgrHandleT hMemMgr,
|
||||
NW_IN void* hMem,
|
||||
NW_IN NwCharT* fileName,
|
||||
NW_IN NwU32T lineNumber);
|
||||
} NwGtpv1uMemMgrEntityT;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Timer Entity Definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_GTPV1U_TMR_TYPE_ONE_SHOT (0)
|
||||
#define NW_GTPV1U_TMR_TYPE_REPETITIVE (1)
|
||||
|
||||
/**
|
||||
* Gtpv2 Timer Manager entity definition
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uTimerMgrHandleT tmrMgrHandle;
|
||||
NwGtpv1uRcT (*tmrStartCallback)( NW_IN NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NW_IN NwU32T timeoutSecs,
|
||||
NW_IN NwU32T timeoutUsec,
|
||||
NW_IN NwU32T tmrType,
|
||||
NW_IN void* tmrArg,
|
||||
NW_OUT NwGtpv1uTimerHandleT* tmrHandle);
|
||||
|
||||
NwGtpv1uRcT (*tmrStopCallback) ( NW_IN NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NW_IN NwGtpv1uTimerHandleT tmrHandle);
|
||||
} NwGtpv1uTimerMgrEntityT;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Log Entity Definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Gtpv2 Log manager entity definition
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwGtpv1uLogMgrHandleT logMgrHandle;
|
||||
NwGtpv1uRcT (*logReqCallback) (NW_IN NwGtpv1uLogMgrHandleT logMgrHandle,
|
||||
NW_IN NwU32T logLevel,
|
||||
NW_IN NwCharT* file,
|
||||
NW_IN NwU32T line,
|
||||
NW_IN NwCharT* logStr);
|
||||
} NwGtpv1uLogMgrEntityT;
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P U B L I C F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Initialize the nw-gtpv1u stack.
|
||||
|
||||
@param[in,out] phGtpv1uStackHandle : Pointer to stack handle
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT* phGtpv1uStackHandle);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Destructor
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Destroy the nw-gtpv1u stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uFinalize( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Configuration Get/Set Operations
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Set Configuration for the nw-gtpv1u stack.
|
||||
|
||||
@param[in,out] phGtpv1uStackHandle : Pointer to stack handle
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
NwGtpv1uConfigSet( NW_IN NwGtpv1uStackHandleT* phGtpv1uStackHandle, NW_IN NwGtpv1uStackConfigT* pConfig);
|
||||
|
||||
/**
|
||||
Get Configuration for the nw-gtpv1u stack.
|
||||
|
||||
@param[in,out] phGtpv1uStackHandle : Pointer to stack handle
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
NwGtpv1uConfigGet( NW_IN NwGtpv1uStackHandleT* phGtpv1uStackHandle, NW_OUT NwGtpv1uStackConfigT* pConfig);
|
||||
|
||||
/**
|
||||
Set ULP entity for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pUlpEntity : Pointer to ULP entity.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetUlpEntity( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uUlpEntityT* pUlpEntity);
|
||||
|
||||
/**
|
||||
Set UDP entity for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pUdpEntity : Pointer to UDP entity.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetUdpEntity( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uUdpEntityT* pUdpEntity);
|
||||
|
||||
/**
|
||||
Set MemMgr entity for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pMemMgr : Pointer to Memory Manager.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetMemMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uMemMgrEntityT* pMemMgr);
|
||||
|
||||
|
||||
/**
|
||||
Set TmrMgr entity for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pTmrMgr : Pointer to Timer Manager.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetTimerMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uTimerMgrEntityT* pTmrMgr);
|
||||
|
||||
/**
|
||||
Set LogMgr entity for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pLogMgr : Pointer to Log Manager.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetLogMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uLogMgrEntityT* pLogMgr);
|
||||
|
||||
/**
|
||||
Set log level for the stack.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] logLevel : Log level.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetLogLevel( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU32T logLevel);
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Request from Udp Layer
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Process Data Request from UDP entity.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] udpData : Pointer to received UDP data.
|
||||
@param[in] udpDataLen : Received data length.
|
||||
@param[in] dstPort : Received on port.
|
||||
@param[in] from : Received from peer information.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessUdpReq( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwU8T* udpData,
|
||||
NW_IN NwU32T udpDataLen,
|
||||
NW_IN NwU16T peerPort,
|
||||
NW_IN NwU32T peerIP);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Request from Upper Layer
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Process Request from ULP entity.
|
||||
|
||||
@param[in] hGtpv1uStackHandle : Stack handle
|
||||
@param[in] pLogMgr : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessUlpReq( NW_IN NwGtpv1uStackHandleT hGtpv1uStackHandle,
|
||||
NW_IN NwGtpv1uUlpApiT *ulpReq);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Timer timeout Request from Timer Manager
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Process Timer timeout Request from Timer Manager
|
||||
|
||||
@param[in] pLogMgr : Pointer timeout arguments.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessTimeout( NW_IN void* timeoutArg);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uPeerRspTimeout(void* arg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_GTPV1U_H__ */
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 c *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 c S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifndef __NW_GTPV1U_ERROR_H__
|
||||
#define __NW_GTPV1U_ERROR_H__
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uError.h
|
||||
* @brief This header file contains return error code type definitions.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
|
||||
NW_GTPV1U_OK = 0x00000000,
|
||||
NW_GTPV1U_MANDATORY_IE_DUPLICATE,
|
||||
NW_GTPV1U_MANDATORY_IE_MISSING,
|
||||
NW_GTPV1U_MSG_MALFORMED,
|
||||
NW_GTPV1U_FAILURE = 0xFFFFFFFE
|
||||
} NwGtpv1uRcT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_GTPV1U_ERROR_H__*/
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uIe.h
|
||||
* @brief This header file contains Information Element definitions for GTPv1u
|
||||
* as per 3GPP TS 29281-930.
|
||||
*/
|
||||
|
||||
#ifndef __NW_GTPV1U_IE_H__
|
||||
#define __NW_GTPV1U_IE_H__
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* G T P V 2 U I E T Y P E M A C R O D E F I N I T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_GTPV1U_IE_RECOVERY (14)
|
||||
#define NW_GTPV1U_IE_TEID_DATA_I (15)
|
||||
#define NW_GTPV1U_IE_GSN_ADDRESS (133)
|
||||
#define NW_GTPV1U_IE_EXT_HDR_TYPE_LIST (141)
|
||||
#define NW_GTPV1U_IE_PRIVATE_EXTENSION (255)
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* G T P V 2 U C A U S E V A L U E D E F I N I T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_GTPV1U_CAUSE_REQUEST_ACCEPTED (16)
|
||||
#define NW_GTPV1U_CAUSE_MANDATORY_IE_MISSING (70)
|
||||
|
||||
#endif /* __NW_GTPV1U_IE_H__ */
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,320 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __NW_GTPV1U_MSG_H__
|
||||
#define __NW_GTPV1U_MSG_H__
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwGtpv1u.h"
|
||||
|
||||
/**
|
||||
* @file NwGtpv1uMsg.h
|
||||
* @brief This file defines APIs for to build new outgoing gtpv1u messages and to parse incoming messages.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* G T P V 2 C I E D A T A - T Y P E D E F I N I T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct NwGtpv1uIeTv1
|
||||
{
|
||||
NwU8T t;
|
||||
NwU8T v;
|
||||
} NwGtpv1uIeTv1T;
|
||||
|
||||
typedef struct NwGtpv1uIeTv2
|
||||
{
|
||||
NwU8T t;
|
||||
NwU8T v;
|
||||
} NwGtpv1uIeTv2T;
|
||||
|
||||
typedef struct NwGtpv1uIeTv4
|
||||
{
|
||||
NwU8T t;
|
||||
NwU32T v;
|
||||
} NwGtpv1uIeTv4T;
|
||||
|
||||
typedef struct NwGtpv1uIeTlv
|
||||
{
|
||||
NwU8T t;
|
||||
NwU16T l;
|
||||
} NwGtpv1uIeTlvT;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/**
|
||||
* Allocate a GPDU gtpv1u message.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : gtpv1u stack handle.
|
||||
* @param[in] teidPresent : TEID is present flag.
|
||||
* @param[in] teid : TEID for this message.
|
||||
* @param[in] seqNum : Sequence number for this message.
|
||||
* @param[out] phMsg : Pointer to message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU8T seqNumFlag,
|
||||
NW_IN NwU8T npduNumFlag,
|
||||
NW_IN NwU8T extHdrFlag,
|
||||
NW_IN NwU8T msgType,
|
||||
NW_IN NwU8T teid,
|
||||
NW_IN NwU16T seqNum,
|
||||
NW_IN NwU8T npduNum,
|
||||
NW_IN NwU8T nextExtHeader,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg);
|
||||
|
||||
|
||||
/**
|
||||
* Allocate a gtpv1u message.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : gtpv1u stack handle.
|
||||
* @param[in] teid : TEID for this message.
|
||||
* @param[in] seqNumFlag : Sequence number flag for this message.
|
||||
* @param[in] seqNum : Sequence number for this message.
|
||||
* @param[in] pTpdu: T-PDU for this message.
|
||||
* @param[in] tpduLength: T-PDU length for this message.
|
||||
* @param[out] phMsg : Pointer to message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uGpduMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU32T teid,
|
||||
NW_IN NwU8T seqNumFlag,
|
||||
NW_IN NwU16T seqNum,
|
||||
NW_IN NwU8T* tpdu,
|
||||
NW_IN NwU16T tpduLength,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg);
|
||||
|
||||
/**
|
||||
* Allocate a gtpv1u message from another gtpv1u message.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : gtpv1u stack handle.
|
||||
* @param[out] hMsg : Handle to input message.
|
||||
* @param[out] phMsg : Pointer to message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgFromMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg);
|
||||
/**
|
||||
* Allocate a gtpv1u message from data buffer.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : gtpv1u stack handle.
|
||||
* @param[in] pBuf: Buffer to be copied in this message.
|
||||
* @param[in] bufLen: Buffer length to be copied in this message.
|
||||
* @param[out] phMsg : Pointer to message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgFromBufferNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU8T* pBuf,
|
||||
NW_IN NwU32T bufLen,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg);
|
||||
|
||||
/**
|
||||
* Free a gtpv1u message.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : gtpv1u stack handle.
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgDelete( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
/**
|
||||
* Set TEID for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[in] teid: TEID value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgSetTeid(NW_IN NwGtpv1uMsgHandleT hMsg, NwU32T teid);
|
||||
|
||||
/**
|
||||
* Set TEID present flag for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[in] teidPesent: Flag boolean value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgSetTeidPresent(NW_IN NwGtpv1uMsgHandleT hMsg, NwBoolT teidPresent);
|
||||
|
||||
/**
|
||||
* Set sequence for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[in] seqNum: Flag boolean value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgSetSeqNumber(NW_IN NwGtpv1uMsgHandleT hMsg, NwU32T seqNum);
|
||||
|
||||
/**
|
||||
* Get TEID present for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetTeid(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
/**
|
||||
* Get TEID present for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwBoolT
|
||||
nwGtpv1uMsgGetTeidPresent(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
/**
|
||||
* Get sequence number for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetSeqNumber(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
/**
|
||||
* Get tpdu for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[inout] pTpduBuf : Buffer to copy the T-PDU.
|
||||
* @param[out] hMsg : T-PDU length.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetTpdu(NW_IN NwGtpv1uMsgHandleT hMsg, NwU8T* pTpduBuf, NwU32T* pTpduLength);
|
||||
|
||||
NwU8T*
|
||||
nwGtpv1uMsgGetTpduHandle(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetTpduLength(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
/**
|
||||
* Add a gtpv1u information element of length 1 to gtpv1u mesasge.
|
||||
*
|
||||
* @param[in] hMsg : Handle to gtpv1u message.
|
||||
* @param[in] type : IE type.
|
||||
* @param[in] value : IE value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV1(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU8T value);
|
||||
|
||||
|
||||
/**
|
||||
* Add a gtpv1u information element of length 2 to gtpv1u mesasge.
|
||||
*
|
||||
* @param[in] hMsg : Handle to gtpv1u message.
|
||||
* @param[in] type : IE type.
|
||||
* @param[in] value : IE value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV2(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU16T value);
|
||||
|
||||
|
||||
/**
|
||||
* Add a gtpv1u information element of length 4 to gtpv1u mesasge.
|
||||
*
|
||||
* @param[in] hMsg : Handle to gtpv1u message.
|
||||
* @param[in] type : IE type.
|
||||
* @param[in] value : IE value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV4(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU32T value);
|
||||
|
||||
|
||||
/**
|
||||
* Add a gtpv1u information element of variable length to gtpv1u mesasge.
|
||||
*
|
||||
* @param[in] hMsg : Handle to gtpv1u message.
|
||||
* @param[in] type : IE type.
|
||||
* @param[in] length : IE length.
|
||||
* @param[in] value : IE value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIe(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU8T* pVal);
|
||||
|
||||
/**
|
||||
* Dump the contents of gtpv1u mesasge.
|
||||
*
|
||||
* @param[in] hMsg : Handle to gtpv1u message.
|
||||
* @param[in] fp: Pointer to output file.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgHexDump(NwGtpv1uMsgHandleT hMsg, FILE* fp);
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetMsgType(NW_IN NwGtpv1uMsgHandleT hMsg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_TYPES_H__ */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 c *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 c S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifndef __NW_LOG_H__
|
||||
#define __NW_LOG_H__
|
||||
|
||||
#include <libgen.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
|
||||
/**
|
||||
* @file NwLog.h
|
||||
* @brief This header file contains global shared logging definitions.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Log Level Definitions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define NW_LOG_LEVEL_EMER (0) /**< system is unusable */
|
||||
#define NW_LOG_LEVEL_ALER (1) /**< action must be taken immediately*/
|
||||
#define NW_LOG_LEVEL_CRIT (2) /**< critical conditions */
|
||||
#define NW_LOG_LEVEL_ERRO (3) /**< error conditions */
|
||||
#define NW_LOG_LEVEL_WARN (4) /**< warning conditions */
|
||||
#define NW_LOG_LEVEL_NOTI (5) /**< normal but signification condition */
|
||||
#define NW_LOG_LEVEL_INFO (6) /**< informational */
|
||||
#define NW_LOG_LEVEL_DEBG (7) /**< debug-level messages */
|
||||
|
||||
// static
|
||||
// NwCharT* gLogLevelStr[] = {"EMER", "ALER", "CRIT", "ERRO", "WARN", "NOTI", "INFO", "DEBG"};
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* IPv4 logging macros
|
||||
*--------------------------------------------------------------------------*/
|
||||
#define NW_IPV4_ADDR "%u.%u.%u.%u"
|
||||
#define NW_IPV4_ADDR_FORMAT(__addr) (NwU8T)((__addr) & 0x000000ff), \
|
||||
(NwU8T)(((__addr) & 0x0000ff00) >> 8 ), \
|
||||
(NwU8T)(((__addr) & 0x00ff0000) >> 16), \
|
||||
(NwU8T)(((__addr) & 0xff000000) >> 24)
|
||||
|
||||
#define NW_IPV4_ADDR_FORMATP(__paddr) (NwU8T)(*((NwU8T*)(__paddr)) & 0x000000ff), \
|
||||
(NwU8T)(*((NwU8T*)(__paddr + 1)) & 0x000000ff), \
|
||||
(NwU8T)(*((NwU8T*)(__paddr + 2)) & 0x000000ff), \
|
||||
(NwU8T)(*((NwU8T*)(__paddr + 3)) & 0x000000ff)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_LOG_H__ */
|
||||
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 c *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 c S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef __NW_TYPES_H__
|
||||
#define __NW_TYPES_H__
|
||||
|
||||
/**
|
||||
* @file NwTypes.h
|
||||
* @brief This header file contains basic type definitions.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define NW_IN /**< An input argument */
|
||||
#define NW_OUT /**< An output argumnet */
|
||||
#define NW_INOUT /**< An input and output argument */
|
||||
|
||||
#define NW_TRUE (1) /**< Truth value */
|
||||
#define NW_FALSE (0) /**< False value */
|
||||
|
||||
typedef unsigned char NwU8T; /**< Unsigned 1 byte */
|
||||
typedef unsigned short NwU16T; /**< Unsigned 2 byte */
|
||||
typedef unsigned int NwU32T; /**< Unsigned 4 byte */
|
||||
typedef unsigned long long NwU64T; /**< Unsigned 8 byte */
|
||||
|
||||
typedef signed char NwS8T; /**< Signed 1 byte */
|
||||
typedef signed short NwS16T; /**< Signed 2 byte */
|
||||
typedef signed int NwS32T; /**< Signed 4 byte */
|
||||
typedef signed long long NwS64T; /**< Signed 8 byte */
|
||||
|
||||
typedef uintptr_t NwPtrT; /**< Use this for generic pointers */
|
||||
typedef unsigned int NwHandleT; /**< Use this for generic handles */
|
||||
|
||||
typedef char NwBoolT; /**< Use this for booleans */
|
||||
|
||||
typedef char NwCharT; /**< Use this for strings */
|
||||
|
||||
typedef signed int NwFdT; /**< Use this for file descriptor */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __NW_TYPES_H__ */
|
||||
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 c *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 c S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#ifndef __NW_UTILS_H__
|
||||
#define __NW_UTILS_H__
|
||||
|
||||
|
||||
/**
|
||||
* @file NwUtils.h
|
||||
* @brief This header file contains utility macro and function definitions.
|
||||
*/
|
||||
|
||||
#define NW_ASSERT assert /**< Assertion */
|
||||
|
||||
#define NW_CHK_NULL_PTR(_ptr) NW_ASSERT(_ptr != NULL) /**< Null pointer check */
|
||||
|
||||
#define NW_HTONS(x) ( ( ((x) & 0xff00) >> 8 ) | ( ((x) & 0x00ff) << 8 ) )
|
||||
|
||||
#define NW_HTONL(x) ( ( ((x) & 0xff000000) >> 24 ) | ( ( (x) & 0x00ff0000 ) >> 8 ) | \
|
||||
( ( (x) & 0x0000ff00 ) << 8 ) | ( ( (x) & 0x000000ff) << 24 ) )
|
||||
|
||||
#define NW_HTONLL(x) ( \
|
||||
( ( ((NwU64T)x) & 0xff00000000000000ULL ) >> 56 ) | ( ( ((NwU64T)x) & 0x00ff000000000000ULL ) >> 40 ) | \
|
||||
( ( ((NwU64T)x) & 0x0000ff0000000000ULL ) >> 24 ) | ( ( ((NwU64T)x) & 0x000000ff00000000ULL ) >> 8 ) | \
|
||||
( ( ((NwU64T)x) & 0x000000000000ff00ULL ) << 40 ) | ( ( ((NwU64T)x) & 0x00000000000000ffULL ) << 56 ) | \
|
||||
( ( ((NwU64T)x) & 0x0000000000ff0000ULL ) << 24 ) | ( ( ((NwU64T)x) & 0x00000000ff000000ULL ) << 8 ) \
|
||||
)
|
||||
|
||||
#define NW_NTOHS NW_HTONS
|
||||
#define NW_NTOHL NW_HTONL
|
||||
#define NW_NTOHLL NW_HTONLL
|
||||
|
||||
|
||||
#endif /* __NW_UTILS_H__ */
|
||||
|
||||
|
||||
@@ -1,883 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwUtils.h"
|
||||
#include "NwGtpv1uError.h"
|
||||
#include "NwGtpv1uPrivate.h"
|
||||
#include "NwGtpv1uTunnelEndPoint.h"
|
||||
#include "NwGtpv1uTrxn.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uIe.h"
|
||||
#include "NwGtpv1uLog.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P R I V A T E F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
nwGtpv1uDisplayBanner( NwGtpv1uStackT* thiz)
|
||||
{
|
||||
printf(" *----------------------------------------------------------------------------*\n");
|
||||
printf(" * *\n");
|
||||
printf(" * n w - g t p v 2 u *\n");
|
||||
printf(" * G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *\n");
|
||||
printf(" * *\n");
|
||||
printf(" * *\n");
|
||||
printf(" * Copyright (c) 2010-2011 Amit Chawre *\n");
|
||||
printf(" * All rights reserved. *\n");
|
||||
printf(" * *\n");
|
||||
printf(" * Redistribution and use in source and binary forms, with or without *\n");
|
||||
printf(" * modification, are permitted provided that the following conditions *\n");
|
||||
printf(" * are met: *\n");
|
||||
printf(" * *\n");
|
||||
printf(" * 1. Redistributions of source code must retain the above copyright *\n");
|
||||
printf(" * notice, this list of conditions and the following disclaimer. *\n");
|
||||
printf(" * 2. Redistributions in binary form must reproduce the above copyright *\n");
|
||||
printf(" * notice, this list of conditions and the following disclaimer in the *\n");
|
||||
printf(" * documentation and/or other materials provided with the distribution. *\n");
|
||||
printf(" * 3. The name of the author may not be used to endorse or promote products *\n");
|
||||
printf(" * derived from this software without specific prior written permission. *\n");
|
||||
printf(" * *\n");
|
||||
printf(" * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *\n");
|
||||
printf(" * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *\n");
|
||||
printf(" * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *\n");
|
||||
printf(" * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *\n");
|
||||
printf(" * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *\n");
|
||||
printf(" * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *\n");
|
||||
printf(" * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *\n");
|
||||
printf(" * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *\n");
|
||||
printf(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *\n");
|
||||
printf(" * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *\n");
|
||||
printf(" *----------------------------------------------------------------------------*\n\n");
|
||||
|
||||
}
|
||||
/*---------------------------------------------------------------------------
|
||||
* RBTree Search Functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static inline NwS32T
|
||||
nwGtpv1uCompareTeid(struct NwGtpv1uTunnelEndPoint* a, struct NwGtpv1uTunnelEndPoint* b);
|
||||
|
||||
static inline NwS32T
|
||||
nwGtpv1uCompareSeqNum(struct NwGtpv1uTrxn* a, struct NwGtpv1uTrxn* b);
|
||||
|
||||
RB_PROTOTYPE(NwGtpv1uOutstandingTxSeqNumTrxnMap, NwGtpv1uTrxn, outstandingTxSeqNumMapRbtNode, nwGtpv1uCompareSeqNum)
|
||||
RB_PROTOTYPE(NwGtpv1uOutstandingRxSeqNumTrxnMap, NwGtpv1uTrxn, outstandingRxSeqNumMapRbtNode, nwGtpv1uCompareSeqNum)
|
||||
RB_PROTOTYPE(NwGtpv1uTunnelEndPointTMap, NwGtpv1uTunnelEndPoint, sessionMapRbtNode, nwGtpv1uCompareTeid)
|
||||
RB_PROTOTYPE(NwGtpv1uTunnelEndPointIdentifierMap, NwGtpv1uTunnelEndPoint, sessionMapRbtNode, nwGtpv1uCompareTeid)
|
||||
|
||||
RB_GENERATE(NwGtpv1uOutstandingTxSeqNumTrxnMap, NwGtpv1uTrxn, outstandingTxSeqNumMapRbtNode, nwGtpv1uCompareSeqNum)
|
||||
RB_GENERATE(NwGtpv1uOutstandingRxSeqNumTrxnMap, NwGtpv1uTrxn, outstandingRxSeqNumMapRbtNode, nwGtpv1uCompareSeqNum)
|
||||
RB_GENERATE(NwGtpv1uTunnelEndPointTMap, NwGtpv1uTunnelEndPoint, sessionMapRbtNode, nwGtpv1uCompareTeid)
|
||||
RB_GENERATE(NwGtpv1uTunnelEndPointIdentifierMap, NwGtpv1uTunnelEndPoint, sessionMapRbtNode, nwGtpv1uCompareTeid)
|
||||
|
||||
/**
|
||||
Comparator funtion for comparing two sessions.
|
||||
|
||||
@param[in] a: Pointer to session a.
|
||||
@param[in] b: Pointer to session b.
|
||||
@return An integer greater than, equal to or less than zero according to whether the
|
||||
object pointed to by a is greater than, equal to or less than the object pointed to by b.
|
||||
*/
|
||||
|
||||
static inline NwS32T
|
||||
nwGtpv1uCompareTeid(struct NwGtpv1uTunnelEndPoint* a, struct NwGtpv1uTunnelEndPoint* b)
|
||||
{
|
||||
if(a->teid > b->teid)
|
||||
return 1;
|
||||
if(a->teid < b->teid)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Comparator funtion for comparing two sequence number transactions.
|
||||
|
||||
@param[in] a: Pointer to session a.
|
||||
@param[in] b: Pointer to session b.
|
||||
@return An integer greater than, equal to or less than zero according to whether the
|
||||
object pointed to by a is greater than, equal to or less than the object pointed to by b.
|
||||
*/
|
||||
|
||||
static inline NwS32T
|
||||
nwGtpv1uCompareSeqNum(struct NwGtpv1uTrxn* a, struct NwGtpv1uTrxn* b)
|
||||
{
|
||||
if(a->seqNum > b->seqNum)
|
||||
return 1;
|
||||
if(a->seqNum < b->seqNum)
|
||||
return -1;
|
||||
if(a->peerIp > b->peerIp)
|
||||
return 1;
|
||||
if(a->peerIp < b->peerIp)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Create and Send GTPU message.
|
||||
|
||||
@param[in] thiz: Stack handle
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uCreateAndSendMsg( NwGtpv1uStackT* thiz, NwU32T peerIp, NwU16T peerPort, NwGtpv1uMsgT* pMsg)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwU8T* msgHdr;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
NW_ASSERT(pMsg);
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
msgHdr = pMsg->msgBuf;
|
||||
NW_ASSERT(msgHdr != NULL);
|
||||
|
||||
*(msgHdr++) = (pMsg->version << 5) |
|
||||
(pMsg->protocolType << 4) |
|
||||
(pMsg->extHdrFlag << 2) |
|
||||
(pMsg->seqNumFlag << 1) |
|
||||
(pMsg->npduNumFlag);
|
||||
|
||||
*(msgHdr++) = (pMsg->msgType);
|
||||
*((NwU16T*) msgHdr) = htons(pMsg->msgLen);
|
||||
msgHdr += 2;
|
||||
|
||||
*((NwU32T*) msgHdr) = htonl(pMsg->teid);
|
||||
msgHdr += 4;
|
||||
|
||||
if(pMsg->seqNumFlag || pMsg->extHdrFlag || pMsg->npduNumFlag)
|
||||
{
|
||||
*((NwU16T*) msgHdr) = (pMsg->seqNumFlag ? htons(pMsg->seqNum) : 0x0000);
|
||||
msgHdr += 2;
|
||||
|
||||
*((NwU8T*) msgHdr) = (pMsg->npduNumFlag ? htons(pMsg->npduNum) : 0x00);
|
||||
msgHdr++;
|
||||
|
||||
*((NwU8T*) msgHdr) = (pMsg->extHdrFlag ? htons(pMsg->nextExtHdrType) : 0x00);
|
||||
msgHdr++;
|
||||
}
|
||||
|
||||
rc = thiz->udp.udpDataReqCallback(thiz->udp.hUdp,
|
||||
pMsg->msgBuf,
|
||||
pMsg->msgLen,
|
||||
peerIp,
|
||||
peerPort);
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send GTPv1u Message Indication to ULP entity.
|
||||
*
|
||||
* @param[in] hGtpuStackHandle : Stack handle
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uSendUlpMessageIndication( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwU32T hUlpTrxn,
|
||||
NW_IN NwU32T apiType,
|
||||
NW_IN NwU32T msgType,
|
||||
NW_IN NwU32T peerIp,
|
||||
NW_IN NwU16T peerPort,
|
||||
NW_IN NwU8T *pMsgBuf,
|
||||
NW_IN NwU16T msgLength)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uUlpApiT ulpApi;
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
ulpApi.apiType = apiType;
|
||||
ulpApi.apiInfo.recvMsgInfo.msgType = msgType;
|
||||
ulpApi.apiInfo.recvMsgInfo.hUlpTrxn = hUlpTrxn;
|
||||
ulpApi.apiInfo.recvMsgInfo.peerIp = peerIp;
|
||||
ulpApi.apiInfo.recvMsgInfo.peerPort = peerPort;
|
||||
|
||||
if(pMsgBuf && msgLength)
|
||||
{
|
||||
rc = nwGtpv1uMsgFromBufferNew((NwGtpv1uStackHandleT)thiz, pMsgBuf, msgLength, &(ulpApi.apiInfo.recvMsgInfo.hMsg));
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
|
||||
rc = thiz->ulp.ulpReqCallback(thiz->ulp.hUlp, &ulpApi);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uPeerRspTimeout(void* arg)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTrxnT* thiz;
|
||||
NwGtpv1uTimeoutInfoT *timeoutInfo = arg;
|
||||
|
||||
printf("Retransmission timer expired\n");
|
||||
|
||||
thiz = ((NwGtpv1uTrxnT*)timeoutInfo->timeoutArg);
|
||||
rc = thiz->pStack->udp.udpDataReqCallback(thiz->pStack->udp.hUdp,
|
||||
thiz->pMsg->msgBuf,
|
||||
thiz->pMsg->msgLen,
|
||||
thiz->peerIp,
|
||||
thiz->peerPort);
|
||||
|
||||
if(thiz->maxRetries)
|
||||
{
|
||||
rc = thiz->pStack->tmrMgr.tmrStartCallback(thiz->pStack->tmrMgr.tmrMgrHandle, 5, 0, NW_GTPV1U_TMR_TYPE_ONE_SHOT, (void*)timeoutInfo, &thiz->hRspTmr);
|
||||
thiz->maxRetries--;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Inform session layer about path fialure */
|
||||
printf("Max retries over!\n");
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* ULP API Processing Functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Process NW_GTPV1U_ULP_API_CREATE_TUNNEL_ENDPOINT Request from ULP entity.
|
||||
|
||||
@param[in] hGtpuStackHandle : Stack handle
|
||||
@param[in] pUlpReq : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
NwGtpv1uCreateTunnelEndPoint( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwU32T teid,
|
||||
NW_IN NwGtpv1uUlpSessionHandleT hUlpSession,
|
||||
NW_OUT NwGtpv1uStackSessionHandleT *phStackSession )
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTunnelEndPointT* pTunnelEndPoint;
|
||||
NwGtpv1uTunnelEndPointT* pCollision;
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
pTunnelEndPoint = nwGtpTunnelEndPointNew(thiz);
|
||||
|
||||
if(pTunnelEndPoint)
|
||||
{
|
||||
|
||||
pTunnelEndPoint->teid = teid;
|
||||
pTunnelEndPoint->pStack = thiz;
|
||||
pTunnelEndPoint->hUlpSession = hUlpSession;
|
||||
|
||||
pCollision = RB_INSERT(NwGtpv1uTunnelEndPointIdentifierMap, &(thiz->teidMap), pTunnelEndPoint);
|
||||
|
||||
if(pCollision)
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_ERRO, "Tunnel end-point cannot be created for teid 0x%x. Tunnel already exists", teid);
|
||||
rc = nwGtpTunnelEndPointDestroy(thiz, pTunnelEndPoint);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
*phStackSession = (NwGtpv1uStackSessionHandleT) 0;
|
||||
NW_ASSERT(0);
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
*phStackSession = (NwGtpv1uStackSessionHandleT) pTunnelEndPoint;
|
||||
pTunnelEndPoint = RB_FIND(NwGtpv1uTunnelEndPointIdentifierMap, &(thiz->teidMap), pTunnelEndPoint);
|
||||
NW_ASSERT(pTunnelEndPoint);
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Tunnel end-point 0x%x creation successful for teid 0x%x",
|
||||
(unsigned int)pTunnelEndPoint, teid);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
*phStackSession = (NwGtpv1uStackSessionHandleT) 0;
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Process NW_GTPV1U_ULP_API_DESTROY_TUNNEL_ENDPOINT Request from ULP entity.
|
||||
|
||||
@param[in] hGtpuStackHandle : Stack handle
|
||||
@param[in] pUlpReq : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uDestroyTunnelEndPoint( NwGtpv1uStackT* thiz, NW_IN NwGtpv1uUlpApiT *pUlpReq)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTunnelEndPointT *pRemovedTeid;
|
||||
|
||||
if(pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle)
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Destroying Tunnel end-point '%x'", pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle);
|
||||
pRemovedTeid = RB_REMOVE(NwGtpv1uTunnelEndPointIdentifierMap, &(thiz->teidMap), (NwGtpv1uTunnelEndPointT*)(pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle));
|
||||
|
||||
NW_ASSERT(pRemovedTeid == (NwGtpv1uTunnelEndPointT*)(pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle));
|
||||
|
||||
rc = nwGtpTunnelEndPointDestroy(thiz, (NwGtpv1uTunnelEndPointT*) pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle);
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_WARN, "Non-existent Tunnel end-point handle '%x'", pUlpReq->apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Process NW_GTPV1U_ULP_API_INITIAL_REQ Request from ULP entity.
|
||||
|
||||
@param[in] hGtpuStackHandle : Stack handle
|
||||
@param[in] pUlpReq : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uInitialReq( NW_IN NwGtpv1uStackT* thiz, NW_IN NwGtpv1uUlpApiT *pUlpReq)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uTrxnT *pTrxn;
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
/* Create New Transaction */
|
||||
rc = nwGtpv1uTrxnNew(thiz, &pTrxn);
|
||||
|
||||
if(pTrxn)
|
||||
{
|
||||
rc = nwGtpv1uTrxnCreateAndSendMsg(thiz,
|
||||
pTrxn,
|
||||
pUlpReq->apiInfo.initialReqInfo.peerIp,
|
||||
pUlpReq->apiInfo.initialReqInfo.peerPort,
|
||||
(NwGtpv1uMsgT*) pUlpReq->hMsg);
|
||||
|
||||
if(rc == NW_GTPV1U_OK)
|
||||
{
|
||||
/* Insert into search tree */
|
||||
RB_INSERT(NwGtpv1uOutstandingTxSeqNumTrxnMap, &(thiz->outstandingTxSeqNumMap), pTrxn);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = nwGtpv1uTrxnDelete(&pTrxn);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
}
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Process NW_GTPV1U_ULP_API_SEND_TPDU Request from ULP entity.
|
||||
|
||||
@param[in] thiz: Stack handle
|
||||
@param[in] pUlpReq : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uSendto( NwGtpv1uStackT* thiz, NW_IN NwGtpv1uUlpApiT *pUlpReq)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
NW_ENTER(thiz);
|
||||
|
||||
(void) nwGtpv1uMsgSetTeid(pUlpReq->apiInfo.sendtoInfo.hMsg, pUlpReq->apiInfo.sendtoInfo.teid);
|
||||
|
||||
rc = nwGtpv1uCreateAndSendMsg(thiz,
|
||||
pUlpReq->apiInfo.sendtoInfo.ipAddr,
|
||||
2152,
|
||||
(NwGtpv1uMsgT*) (NwGtpv1uMsgT*) pUlpReq->apiInfo.sendtoInfo.hMsg);
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Process GPDU from UDP entity.
|
||||
|
||||
@param[in] thiz: Stack handle
|
||||
@param[in] pUlpReq : Pointer to Ulp Req.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uProcessGpdu( NwGtpv1uStackT* thiz,
|
||||
NW_IN NwU8T* gpdu,
|
||||
NW_IN NwU32T gdpuLen,
|
||||
NW_IN NwU32T peerIp)
|
||||
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uMsgHeaderT* msgHdr;
|
||||
NwGtpv1uTunnelEndPointT* pTunnelEndPoint;
|
||||
NwGtpv1uTunnelEndPointT tunnelEndPointKey;
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
msgHdr = (NwGtpv1uMsgHeaderT*) gpdu;
|
||||
|
||||
tunnelEndPointKey.teid = ntohl(msgHdr->teid);
|
||||
pTunnelEndPoint = RB_FIND(NwGtpv1uTunnelEndPointIdentifierMap, &(thiz->teidMap), &tunnelEndPointKey);
|
||||
|
||||
if(pTunnelEndPoint)
|
||||
{
|
||||
NwGtpv1uMsgHandleT hMsg;
|
||||
|
||||
rc = nwGtpv1uMsgFromBufferNew( (NwGtpv1uStackHandleT)thiz,
|
||||
(NwU8T*)gpdu,
|
||||
gdpuLen,
|
||||
&hMsg);
|
||||
|
||||
if(NW_GTPV1U_OK == rc)
|
||||
{
|
||||
NwGtpv1uMsgT* pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received T-PDU over tunnel end-point '%x' of size %u from "NW_IPV4_ADDR, ntohl(msgHdr->teid), pMsg->msgLen, NW_IPV4_ADDR_FORMAT((peerIp)));
|
||||
rc = nwGtpSessionSendMsgApiToUlpEntity(pTunnelEndPoint, pMsg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_ERRO, "Received T-PDU over non-existent tunnel end-point '%x' from "NW_IPV4_ADDR, ntohl(msgHdr->teid), NW_IPV4_ADDR_FORMAT((peerIp)));
|
||||
}
|
||||
NW_LEAVE(thiz);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Handle Echo Request from Peer Entity.
|
||||
|
||||
@param[in] thiz : Stack context
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uHandleEchoReq(NW_IN NwGtpv1uStackT *thiz,
|
||||
NW_IN NwU8T* msgBuf,
|
||||
NW_IN NwU32T msgBufLen,
|
||||
NW_IN NwU16T peerPort,
|
||||
NW_IN NwU32T peerIp)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwU16T seqNum = 0;
|
||||
NwGtpv1uMsgHandleT hMsg = 0;
|
||||
|
||||
seqNum = ntohs(*(NwU16T*) (msgBuf + (((*msgBuf) & 0x02) ? 8 : 4)));
|
||||
|
||||
/* Send Echo Response */
|
||||
|
||||
rc = nwGtpv1uMsgNew( (NwGtpv1uStackHandleT)thiz,
|
||||
NW_TRUE, /* SeqNum flag */
|
||||
NW_FALSE,
|
||||
NW_FALSE,
|
||||
NW_GTP_ECHO_RSP, /* Msg Type */
|
||||
0x00000000U, /* TEID */
|
||||
seqNum, /* Seq Number */
|
||||
0,
|
||||
0,
|
||||
(&hMsg));
|
||||
|
||||
NW_ASSERT(NW_GTPV1U_OK == rc);
|
||||
|
||||
/*
|
||||
* The Restart Counter value in the Recovery information element shall
|
||||
* not be used, i.e. it shall be set to zero by the sender and shall be
|
||||
* ignored by the receiver.
|
||||
*/
|
||||
rc = nwGtpv1uMsgAddIeTV1(hMsg, NW_GTPV1U_IE_RECOVERY, 0x00);
|
||||
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_INFO, "Sending NW_GTP_ECHO_RSP message to %x:%x with seq %u", peerIp, peerPort, seqNum);
|
||||
|
||||
rc = nwGtpv1uCreateAndSendMsg(thiz,
|
||||
peerIp,
|
||||
peerPort,
|
||||
(NwGtpv1uMsgT*) hMsg);
|
||||
|
||||
rc = nwGtpv1uMsgDelete((NwGtpv1uStackHandleT)thiz, hMsg);
|
||||
NW_ASSERT(NW_GTPV1U_OK == rc);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P U B L I C F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT* hGtpuStackHandle)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz;
|
||||
|
||||
thiz = (NwGtpv1uStackT*) malloc( sizeof(NwGtpv1uStackT));
|
||||
|
||||
if(thiz)
|
||||
{
|
||||
thiz->id = (NwU32T) thiz;
|
||||
thiz->seq = (NwU16T) ((NwU32T)thiz) ;
|
||||
RB_INIT(&(thiz->outstandingTxSeqNumMap));
|
||||
RB_INIT(&(thiz->outstandingRxSeqNumMap));
|
||||
if (0 == 1)
|
||||
nwGtpv1uDisplayBanner(thiz);
|
||||
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
*hGtpuStackHandle = (NwGtpv1uStackHandleT) thiz;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Destructor
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uFinalize( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
if(hGtpuStackHandle)
|
||||
{
|
||||
free((void*)hGtpuStackHandle);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Configuration Get/Set
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetUlpEntity( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uUlpEntityT* pUlpEntity)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
if(pUlpEntity)
|
||||
{
|
||||
thiz->ulp = *(pUlpEntity);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetUdpEntity( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uUdpEntityT* pUdpEntity)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
if(pUdpEntity)
|
||||
{
|
||||
thiz->udp = *(pUdpEntity);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetMemMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uMemMgrEntityT* pMemMgrEntity)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
if(pMemMgrEntity)
|
||||
{
|
||||
thiz->memMgr = *(pMemMgrEntity);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetTimerMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uTimerMgrEntityT* pTmrMgrEntity)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
if(pTmrMgrEntity)
|
||||
{
|
||||
thiz->tmrMgr = *(pTmrMgrEntity);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetLogMgrEntity( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uLogMgrEntityT* pLogMgrEntity)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
if(pLogMgrEntity)
|
||||
{
|
||||
thiz->logMgr = *(pLogMgrEntity);
|
||||
rc = NW_GTPV1U_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uSetLogLevel( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU32T logLevel)
|
||||
{
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
thiz->logLevel = logLevel;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Request from Udp Layer
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessUdpReq( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU8T* udpData,
|
||||
NW_IN NwU32T udpDataLen,
|
||||
NW_IN NwU16T peerPort,
|
||||
NW_IN NwU32T peerIp)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz;
|
||||
NwU16T msgType;
|
||||
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
|
||||
msgType = *((NwU8T*)(udpData + 1));
|
||||
|
||||
switch(msgType)
|
||||
{
|
||||
case NW_GTP_ECHO_REQ:
|
||||
rc = nwGtpv1uHandleEchoReq( thiz, udpData, udpDataLen, peerPort, peerIp);
|
||||
break;
|
||||
|
||||
case NW_GTP_ERROR_INDICATION:
|
||||
|
||||
rc = nwGtpv1uSendUlpMessageIndication( thiz,
|
||||
0,
|
||||
NW_GTPV1U_ULP_API_RECV_MSG,
|
||||
msgType,
|
||||
peerIp,
|
||||
peerPort,
|
||||
udpData,
|
||||
udpDataLen);
|
||||
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
|
||||
break;
|
||||
|
||||
case NW_GTP_ECHO_RSP:
|
||||
rc = NW_GTPV1U_OK;
|
||||
break;
|
||||
|
||||
case NW_GTP_GPDU:
|
||||
rc = nwGtpv1uProcessGpdu(thiz, udpData, udpDataLen, peerIp);
|
||||
break;
|
||||
|
||||
default:
|
||||
NW_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Request from Upper Layer
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessUlpReq( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uUlpApiT *pUlpReq)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_FAILURE;
|
||||
NwGtpv1uStackT* thiz = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
NW_ASSERT(pUlpReq != NULL);
|
||||
|
||||
NW_ENTER(thiz);
|
||||
|
||||
switch(pUlpReq->apiType)
|
||||
{
|
||||
case NW_GTPV1U_ULP_API_CREATE_TUNNEL_ENDPOINT:
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received create session req from ulp");
|
||||
rc = NwGtpv1uCreateTunnelEndPoint(thiz,
|
||||
pUlpReq->apiInfo.createTunnelEndPointInfo.teid,
|
||||
pUlpReq->apiInfo.createTunnelEndPointInfo.hUlpSession,
|
||||
&(pUlpReq->apiInfo.createTunnelEndPointInfo.hStackSession));
|
||||
}
|
||||
break;
|
||||
|
||||
case NW_GTPV1U_ULP_API_DESTROY_TUNNEL_ENDPOINT:
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received destroy session req from ulp");
|
||||
rc = nwGtpv1uDestroyTunnelEndPoint(thiz, pUlpReq);
|
||||
}
|
||||
break;
|
||||
|
||||
case NW_GTPV1U_ULP_API_INITIAL_REQ:
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received initial req from ulp");
|
||||
rc = nwGtpv1uInitialReq(thiz, pUlpReq);
|
||||
}
|
||||
break;
|
||||
|
||||
case NW_GTPV1U_ULP_API_SEND_TPDU:
|
||||
{
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received send tpdu req from ulp");
|
||||
rc = nwGtpv1uSendto(thiz, pUlpReq);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_ERRO, "Unsupported API received from ulp");
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Process Timer timeout Request from Timer Manager
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uProcessTimeout(void* timeoutInfo)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uStackT* thiz;
|
||||
|
||||
NW_ASSERT(timeoutInfo != NULL);
|
||||
|
||||
thiz = (NwGtpv1uStackT*) (((NwGtpv1uTimeoutInfoT*) timeoutInfo)->hStack);
|
||||
|
||||
NW_ASSERT(thiz != NULL);
|
||||
|
||||
NW_ENTER(thiz);
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Received timeout event from ULP with timeoutInfo %x!", (unsigned int)timeoutInfo);
|
||||
|
||||
rc = (((NwGtpv1uTimeoutInfoT*) timeoutInfo)->timeoutCallbackFunc) (timeoutInfo);
|
||||
|
||||
NW_LEAVE(thiz);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,487 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwLog.h"
|
||||
#include "NwUtils.h"
|
||||
#include "NwGtpv1uLog.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uPrivate.h"
|
||||
#include "NwGtpv1uMsg.h"
|
||||
|
||||
#define NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE (12) /**< Size of GTPv1u EPC specific header */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static NwGtpv1uMsgT* gpGtpv1uMsgPool = NULL;
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU8T seqNumFlag,
|
||||
NW_IN NwU8T npduNumFlag,
|
||||
NW_IN NwU8T extHdrFlag,
|
||||
NW_IN NwU8T msgType,
|
||||
NW_IN NwU8T teid,
|
||||
NW_IN NwU16T seqNum,
|
||||
NW_IN NwU8T npduNum,
|
||||
NW_IN NwU8T nextExtHeader,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg)
|
||||
{
|
||||
NwGtpv1uStackT* pStack = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
NwGtpv1uMsgT *pMsg;
|
||||
|
||||
if(gpGtpv1uMsgPool)
|
||||
{
|
||||
pMsg = gpGtpv1uMsgPool;
|
||||
gpGtpv1uMsgPool = gpGtpv1uMsgPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(pStack, sizeof(NwGtpv1uMsgT), pMsg, NwGtpv1uMsgT*);
|
||||
}
|
||||
|
||||
|
||||
if(pMsg)
|
||||
{
|
||||
pMsg->version = NW_GTPU_VERSION;
|
||||
pMsg->protocolType = NW_GTP_PROTOCOL_TYPE_GTP;
|
||||
pMsg->seqNumFlag = seqNumFlag;
|
||||
pMsg->npduNumFlag = npduNumFlag;
|
||||
pMsg->extHdrFlag = extHdrFlag;
|
||||
pMsg->msgType = msgType;
|
||||
|
||||
if(seqNumFlag)
|
||||
pMsg->seqNum = seqNum;
|
||||
if(npduNumFlag)
|
||||
pMsg->npduNum = npduNum;
|
||||
if(extHdrFlag)
|
||||
pMsg->nextExtHdrType = nextExtHeader;
|
||||
|
||||
pMsg->msgLen = ((pMsg->seqNumFlag || pMsg->npduNumFlag || pMsg->extHdrFlag) ?
|
||||
NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE : (NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE - 4));
|
||||
|
||||
*phMsg = (NwGtpv1uMsgHandleT) pMsg;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
return NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uGpduMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU32T teid,
|
||||
NW_IN NwU8T seqNumFlag,
|
||||
NW_IN NwU16T seqNum,
|
||||
NW_IN NwU8T* tpdu,
|
||||
NW_IN NwU16T tpduLength,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg)
|
||||
{
|
||||
NwGtpv1uStackT* pStack = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
NwGtpv1uMsgT *pMsg;
|
||||
|
||||
if(gpGtpv1uMsgPool)
|
||||
{
|
||||
pMsg = gpGtpv1uMsgPool;
|
||||
gpGtpv1uMsgPool = gpGtpv1uMsgPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(pStack, sizeof(NwGtpv1uMsgT), pMsg, NwGtpv1uMsgT*);
|
||||
}
|
||||
|
||||
if(pMsg)
|
||||
{
|
||||
pMsg->version = NW_GTPU_VERSION;
|
||||
pMsg->protocolType = NW_GTP_PROTOCOL_TYPE_GTP;
|
||||
pMsg->extHdrFlag = NW_FALSE;
|
||||
pMsg->seqNumFlag = (seqNumFlag? NW_TRUE : NW_FALSE);
|
||||
pMsg->npduNumFlag = NW_FALSE;
|
||||
pMsg->msgType = NW_GTP_GPDU;
|
||||
pMsg->teid = teid;
|
||||
pMsg->seqNum = seqNum;
|
||||
pMsg->npduNum = 0x00;
|
||||
pMsg->nextExtHdrType= 0x00;
|
||||
pMsg->msgLen = ((pMsg->seqNumFlag || pMsg->npduNumFlag || pMsg->extHdrFlag ) ?
|
||||
NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE : (NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE - 4));
|
||||
|
||||
memcpy(pMsg->msgBuf + pMsg->msgLen, tpdu, tpduLength);
|
||||
pMsg->msgLen += tpduLength;
|
||||
|
||||
*phMsg = (NwGtpv1uMsgHandleT) pMsg;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
return NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgFromMsgNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg)
|
||||
{
|
||||
NwGtpv1uStackT* pStack = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
NwGtpv1uMsgT *pMsg;
|
||||
|
||||
if(gpGtpv1uMsgPool)
|
||||
{
|
||||
pMsg = gpGtpv1uMsgPool;
|
||||
gpGtpv1uMsgPool = gpGtpv1uMsgPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(pStack, sizeof(NwGtpv1uMsgT), pMsg, NwGtpv1uMsgT*);
|
||||
}
|
||||
|
||||
|
||||
if(pMsg)
|
||||
{
|
||||
memcpy(pMsg, (NwGtpv1uMsgT*)hMsg, sizeof(NwGtpv1uMsgT));
|
||||
*phMsg = (NwGtpv1uMsgHandleT) pMsg;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
return NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgFromBufferNew( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwU8T* pBuf,
|
||||
NW_IN NwU32T bufLen,
|
||||
NW_OUT NwGtpv1uMsgHandleT *phMsg)
|
||||
{
|
||||
NwGtpv1uStackT* pStack = (NwGtpv1uStackT*) hGtpuStackHandle;
|
||||
NwGtpv1uMsgT *pMsg;
|
||||
|
||||
if(gpGtpv1uMsgPool)
|
||||
{
|
||||
pMsg = gpGtpv1uMsgPool;
|
||||
gpGtpv1uMsgPool = gpGtpv1uMsgPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(pStack, sizeof(NwGtpv1uMsgT), pMsg, NwGtpv1uMsgT*);
|
||||
}
|
||||
|
||||
|
||||
if(pMsg)
|
||||
{
|
||||
memcpy(pMsg->msgBuf, pBuf, bufLen);
|
||||
pMsg->msgLen = bufLen;
|
||||
|
||||
pMsg->version = ((*pBuf) & 0xE0) >> 5;
|
||||
pMsg->protocolType = ((*pBuf) & 0x10) >> 4;
|
||||
pMsg->extHdrFlag = ((*pBuf) & 0x04) >> 2;
|
||||
pMsg->seqNumFlag = ((*pBuf) & 0x02) >> 1;
|
||||
pMsg->npduNumFlag = ((*pBuf) & 0x01);
|
||||
pBuf++;
|
||||
|
||||
pMsg->msgType = *(pBuf);
|
||||
pBuf++;
|
||||
|
||||
pBuf += 2;
|
||||
|
||||
pMsg->teid = ntohl(*((NwU32T*)pBuf));
|
||||
pBuf += 4;
|
||||
|
||||
if(pMsg->extHdrFlag || pMsg->seqNumFlag || pMsg->npduNumFlag)
|
||||
{
|
||||
pMsg->seqNum = ntohs(*(((NwU16T*)pBuf)));
|
||||
pBuf += 2;
|
||||
pMsg->npduNum = *(pBuf++);
|
||||
pMsg->nextExtHdrType = *(pBuf++);
|
||||
}
|
||||
*phMsg = (NwGtpv1uMsgHandleT) pMsg;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
return NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgDelete( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle,
|
||||
NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
((NwGtpv1uMsgT*)hMsg)->next = gpGtpv1uMsgPool;
|
||||
gpGtpv1uMsgPool = (NwGtpv1uMsgT*) hMsg;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set TEID for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[in] teid: TEID value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgSetTeid(NW_IN NwGtpv1uMsgHandleT hMsg, NwU32T teid)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
thiz->teid = teid;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set sequence for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
* @param[in] seqNum: Flag boolean value.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgSetSeqNumber(NW_IN NwGtpv1uMsgHandleT hMsg, NwU32T seqNum)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
thiz->seqNum = seqNum;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get TEID present for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetTeid(NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
return (thiz->teid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get sequence number for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetSeqNumber(NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
return (thiz->seqNum);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get msg type for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetMsgType(NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
return (thiz->msgType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tpdu for gtpv1u message.
|
||||
*
|
||||
* @param[in] hMsg : Message handle.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgGetTpdu(NW_IN NwGtpv1uMsgHandleT hMsg, NwU8T* pTpduBuf, NwU32T* pTpduLength)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
NwU8T headerLength = ((thiz->seqNumFlag || thiz->extHdrFlag || thiz->npduNumFlag) ? 12 : 8);
|
||||
|
||||
*pTpduLength = thiz->msgLen - headerLength;
|
||||
memcpy(pTpduBuf, thiz->msgBuf + headerLength, *pTpduLength);
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwU8T*
|
||||
nwGtpv1uMsgGetTpduHandle(NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
return (thiz->msgBuf + ((thiz->seqNumFlag || thiz->extHdrFlag || thiz->npduNumFlag) ? 12 : 8));
|
||||
}
|
||||
|
||||
NwU32T
|
||||
nwGtpv1uMsgGetTpduLength(NW_IN NwGtpv1uMsgHandleT hMsg)
|
||||
{
|
||||
NwGtpv1uMsgT *thiz = (NwGtpv1uMsgT*) hMsg;
|
||||
return (thiz->msgLen - ((thiz->seqNumFlag || thiz->extHdrFlag || thiz->npduNumFlag) ? 12 : 8));
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV1(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU8T value)
|
||||
{
|
||||
NwGtpv1uMsgT *pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NwGtpv1uIeTv1T *pIe;
|
||||
|
||||
pIe = (NwGtpv1uIeTv1T*) (pMsg->msgBuf + pMsg->msgLen);
|
||||
|
||||
pIe->t = type;
|
||||
pIe->v = value;
|
||||
|
||||
pMsg->msgLen += sizeof(NwGtpv1uIeTv1T);
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV2(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU16T value)
|
||||
{
|
||||
NwGtpv1uMsgT *pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NwGtpv1uIeTv2T *pIe;
|
||||
|
||||
pIe = (NwGtpv1uIeTv2T*) (pMsg->msgBuf + pMsg->msgLen);
|
||||
|
||||
pIe->t = type;
|
||||
pIe->v = htons(value);
|
||||
|
||||
pMsg->msgLen += sizeof(NwGtpv1uIeTv2T);
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIeTV4(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU32T value)
|
||||
{
|
||||
NwGtpv1uMsgT *pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NwGtpv1uIeTv4T *pIe;
|
||||
|
||||
pIe = (NwGtpv1uIeTv4T*) (pMsg->msgBuf + pMsg->msgLen);
|
||||
|
||||
pIe->t = type;
|
||||
pIe->v = htonl(value);
|
||||
|
||||
pMsg->msgLen += sizeof(NwGtpv1uIeTv4T);
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgAddIe(NW_IN NwGtpv1uMsgHandleT hMsg,
|
||||
NW_IN NwU8T type,
|
||||
NW_IN NwU16T length,
|
||||
NW_IN NwU8T* pVal)
|
||||
{
|
||||
NwGtpv1uMsgT *pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NwGtpv1uIeTlvT *pIe;
|
||||
|
||||
pIe = (NwGtpv1uIeTlvT*) (pMsg->msgBuf + pMsg->msgLen);
|
||||
|
||||
pIe->t = type;
|
||||
pIe->l = htons(length);
|
||||
|
||||
memcpy(pIe + 4, pVal, length);
|
||||
pMsg->msgLen += (4 + length);
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uMsgHexDump(NwGtpv1uMsgHandleT hMsg, FILE* fp)
|
||||
{
|
||||
|
||||
NwGtpv1uMsgT* pMsg = (NwGtpv1uMsgT*) hMsg;
|
||||
NwU8T* data = pMsg->msgBuf;
|
||||
NwU32T size = pMsg->msgLen;
|
||||
|
||||
unsigned char *p = (unsigned char*)data;
|
||||
unsigned char c;
|
||||
int n;
|
||||
char bytestr[4] = {0};
|
||||
char addrstr[10] = {0};
|
||||
char hexstr[ 16*3 + 5] = {0};
|
||||
char charstr[16*1 + 5] = {0};
|
||||
fprintf((FILE*)fp, "\n");
|
||||
for(n=1;n<=size;n++) {
|
||||
if (n%16 == 1) {
|
||||
/* store address for this line */
|
||||
snprintf(addrstr, sizeof(addrstr), "%.4x",
|
||||
((unsigned int)p-(unsigned int)data) );
|
||||
}
|
||||
|
||||
c = *p;
|
||||
if (isalnum(c) == 0) {
|
||||
c = '.';
|
||||
}
|
||||
|
||||
/* store hex str (for left side) */
|
||||
snprintf(bytestr, sizeof(bytestr), "%02X ", *p);
|
||||
strncat(hexstr, bytestr, sizeof(hexstr)-strlen(hexstr)-1);
|
||||
|
||||
/* store char str (for right side) */
|
||||
snprintf(bytestr, sizeof(bytestr), "%c", c);
|
||||
strncat(charstr, bytestr, sizeof(charstr)-strlen(charstr)-1);
|
||||
if(n%16 == 0) {
|
||||
/* line completed */
|
||||
fprintf((FILE*)fp, "[%4.4s] %-50.50s %s\n", addrstr, hexstr, charstr);
|
||||
hexstr[0] = 0;
|
||||
charstr[0] = 0;
|
||||
} else if(n%8 == 0) {
|
||||
/* half line: add whitespaces */
|
||||
strncat(hexstr, " ", sizeof(hexstr)-strlen(hexstr)-1);
|
||||
strncat(charstr, " ", sizeof(charstr)-strlen(charstr)-1);
|
||||
}
|
||||
p++; /* next byte */
|
||||
}
|
||||
|
||||
if (strlen(hexstr) > 0) {
|
||||
/* print rest of buffer if not empty */
|
||||
fprintf((FILE*)fp, "[%4.4s] %-50.50s %s\n", addrstr, hexstr, charstr);
|
||||
|
||||
}
|
||||
fprintf((FILE*)fp, "\n");
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,411 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwLog.h"
|
||||
#include "NwUtils.h"
|
||||
#include "NwGtpv1uLog.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uPrivate.h"
|
||||
#include "NwGtpv1uTrxn.h"
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P R I V A T E D E C L A R A T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static NwGtpv1uTrxnT* gpGtpv1uTrxnPool = NULL;
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P R I V A T E F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Send msg retransmission to peer via data request to UDP Entity
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uTrxnSendMsgRetransmission(NwGtpv1uTrxnT* thiz)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
NW_ASSERT(thiz->pMsg);
|
||||
|
||||
rc = thiz->pStack->udp.udpDataReqCallback(thiz->pStack->udp.hUdp,
|
||||
thiz->pMsg->msgBuf,
|
||||
thiz->pMsg->msgLen,
|
||||
thiz->peerIp,
|
||||
thiz->peerPort);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uTrxnPeerRspTimeout(void* arg)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTrxnT* thiz;
|
||||
NwGtpv1uStackT* pStack;
|
||||
NwGtpv1uTimeoutInfoT *timeoutInfo = arg;
|
||||
|
||||
thiz = ((NwGtpv1uTrxnT*)timeoutInfo->timeoutArg);
|
||||
pStack = thiz->pStack;
|
||||
|
||||
NW_ASSERT(pStack);
|
||||
|
||||
NW_LOG(pStack, NW_LOG_LEVEL_WARN, "T3 timer expired for transaction 0x%x", (unsigned int)thiz);
|
||||
|
||||
rc = nwGtpv1uTrxnSendMsgRetransmission(thiz);
|
||||
|
||||
if(thiz->maxRetries)
|
||||
{
|
||||
rc = pStack->tmrMgr.tmrStartCallback(pStack->tmrMgr.tmrMgrHandle, thiz->t3Timer, 0, NW_GTPV1U_TMR_TYPE_ONE_SHOT, (void*)timeoutInfo, &thiz->hRspTmr);
|
||||
thiz->maxRetries--;
|
||||
}
|
||||
else
|
||||
{
|
||||
NwGtpv1uUlpApiT ulpApi;
|
||||
ulpApi.apiType = NW_GTPV1U_ULP_API_RSP_FAILURE;
|
||||
ulpApi.apiInfo.recvMsgInfo.msgType = nwGtpv1uMsgGetMsgType((NwGtpv1uMsgHandleT)thiz->pMsg);
|
||||
ulpApi.apiInfo.recvMsgInfo.hUlpTrxn = thiz->hUlpTrxn;
|
||||
ulpApi.apiInfo.recvMsgInfo.peerIp = thiz->peerIp;
|
||||
ulpApi.apiInfo.recvMsgInfo.peerPort = thiz->peerPort;
|
||||
thiz->hRspTmr = 0;
|
||||
|
||||
rc = nwGtpv1uTrxnDelete(&thiz);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
|
||||
rc = pStack->ulp.ulpReqCallback(pStack->ulp.hUlp, &ulpApi);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Send timer start request to TmrMgr Entity.
|
||||
|
||||
@param[in] thiz : Pointer to transaction
|
||||
@param[in] timeoutCallbackFunc : Timeout handler callback function.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uTrxnStartPeerRspTimer(NwGtpv1uTrxnT* thiz, NwGtpv1uRcT (*timeoutCallbackFunc)(void*))
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uTimeoutInfoT *timeoutInfo;
|
||||
|
||||
NW_ASSERT(thiz->pStack->tmrMgr.tmrStartCallback != NULL);
|
||||
|
||||
timeoutInfo = &thiz->peerRspTimeoutInfo;
|
||||
timeoutInfo->timeoutArg = thiz;
|
||||
timeoutInfo->timeoutCallbackFunc = timeoutCallbackFunc;
|
||||
timeoutInfo->hStack = (NwGtpv1uStackHandleT)thiz->pStack;
|
||||
|
||||
rc = thiz->pStack->tmrMgr.tmrStartCallback(thiz->pStack->tmrMgr.tmrMgrHandle, thiz->t3Timer, 0, NW_GTPV1U_TMR_TYPE_ONE_SHOT, (void*)timeoutInfo, &thiz->hRspTmr);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
Send timer stop request to TmrMgr Entity.
|
||||
|
||||
@param[in] thiz : Pointer to transaction
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
static NwGtpv1uRcT
|
||||
nwGtpv1uTrxnStopPeerRspTimer(NwGtpv1uTrxnT* thiz)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
|
||||
NW_ASSERT(thiz->pStack->tmrMgr.tmrStopCallback != NULL);
|
||||
|
||||
rc = thiz->pStack->tmrMgr.tmrStopCallback(thiz->pStack->tmrMgr.tmrMgrHandle, thiz->hRspTmr);
|
||||
|
||||
thiz->hRspTmr = 0;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P U B L I C F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param[in] thiz : Pointer to stack
|
||||
* @param[out] ppTrxn : Pointer to pointer to Trxn object.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnNew( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_OUT NwGtpv1uTrxnT **ppTrxn)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTrxnT *pTrxn;
|
||||
|
||||
if(gpGtpv1uTrxnPool)
|
||||
{
|
||||
pTrxn = gpGtpv1uTrxnPool;
|
||||
gpGtpv1uTrxnPool = gpGtpv1uTrxnPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(thiz, sizeof(NwGtpv1uTrxnT), pTrxn, NwGtpv1uTrxnT*);
|
||||
}
|
||||
|
||||
if (pTrxn)
|
||||
{
|
||||
pTrxn->maxRetries = 2;
|
||||
pTrxn->pStack = thiz;
|
||||
pTrxn->t3Timer = 2;
|
||||
pTrxn->seqNum = thiz->seq;
|
||||
|
||||
/* Increment sequence number */
|
||||
thiz->seq++;
|
||||
if(thiz->seq == 0x800000)
|
||||
thiz->seq = 0;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Created transaction 0x%X", (unsigned int)pTrxn);
|
||||
|
||||
*ppTrxn = pTrxn;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overloaded Constructor
|
||||
*
|
||||
* @param[in] thiz : Pointer to stack.
|
||||
* @param[in] seqNum : Sequence number for this transaction.
|
||||
* @param[out] ppTrxn : Pointer to pointer to Trxn object.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnWithSeqNew( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwU32T seqNum,
|
||||
NW_OUT NwGtpv1uTrxnT **ppTrxn)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uTrxnT *pTrxn;
|
||||
|
||||
if(gpGtpv1uTrxnPool)
|
||||
{
|
||||
pTrxn = gpGtpv1uTrxnPool;
|
||||
gpGtpv1uTrxnPool = gpGtpv1uTrxnPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(thiz, sizeof(NwGtpv1uTrxnT), pTrxn, NwGtpv1uTrxnT*);
|
||||
}
|
||||
|
||||
|
||||
if (pTrxn)
|
||||
{
|
||||
pTrxn->maxRetries = 2;
|
||||
pTrxn->pStack = thiz;
|
||||
pTrxn->t3Timer = 2;
|
||||
pTrxn->seqNum = seqNum;
|
||||
pTrxn->pMsg = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = NW_GTPV1U_FAILURE;
|
||||
}
|
||||
|
||||
NW_LOG(thiz, NW_LOG_LEVEL_DEBG, "Created transaction 0x%X", (unsigned int)pTrxn);
|
||||
|
||||
*ppTrxn = pTrxn;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*
|
||||
* @param[out] pthiz : Pointer to pointer to Trxn object.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnDelete( NW_INOUT NwGtpv1uTrxnT **pthiz)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uStackT* pStack;
|
||||
NwGtpv1uTrxnT *thiz = *pthiz;
|
||||
|
||||
pStack = thiz->pStack;
|
||||
|
||||
if(thiz->hRspTmr)
|
||||
{
|
||||
rc = nwGtpv1uTrxnStopPeerRspTimer(thiz);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
|
||||
if(thiz->pMsg)
|
||||
{
|
||||
rc = nwGtpv1uMsgDelete((NwGtpv1uStackHandleT)pStack, (NwGtpv1uMsgHandleT)thiz->pMsg);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
|
||||
thiz->next = gpGtpv1uTrxnPool;
|
||||
gpGtpv1uTrxnPool = thiz;
|
||||
|
||||
NW_LOG(pStack, NW_LOG_LEVEL_DEBG, "Purged transaction 0x%X", (unsigned int)thiz);
|
||||
|
||||
*pthiz = NULL;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
#if 1
|
||||
/**
|
||||
* Send msg to peer via data request to UDP Entity
|
||||
*
|
||||
* @param[in] thiz : Pointer to stack.
|
||||
* @param[in] pTrxn : Pointer to Trxn object.
|
||||
* @param[in] peerIp : Peer Ip address.
|
||||
* @param[in] peerPort : Peer Ip port.
|
||||
* @param[in] pMsg : Message to be sent.
|
||||
* @return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
NwGtpv1uRcT
|
||||
nwGtpv1uTrxnCreateAndSendMsg( NW_IN NwGtpv1uStackT* thiz,
|
||||
NW_IN NwGtpv1uTrxnT *pTrxn,
|
||||
NW_IN NwU32T peerIp,
|
||||
NW_IN NwU32T peerPort,
|
||||
NW_IN NwGtpv1uMsgT *pMsg)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwU8T* msgHdr;
|
||||
|
||||
NW_ASSERT(thiz);
|
||||
NW_ASSERT(pMsg);
|
||||
|
||||
msgHdr = pMsg->msgBuf;
|
||||
NW_ASSERT(msgHdr != NULL);
|
||||
|
||||
*(msgHdr++) = (pMsg->version << 5) |
|
||||
(pMsg->protocolType << 4) |
|
||||
(pMsg->extHdrFlag << 2) |
|
||||
(pMsg->seqNumFlag << 1) |
|
||||
(pMsg->npduNumFlag);
|
||||
|
||||
*(msgHdr++) = (pMsg->msgType);
|
||||
*((NwU16T*) msgHdr) = htons(pMsg->msgLen);
|
||||
msgHdr += 2;
|
||||
|
||||
*((NwU32T*) msgHdr) = htonl(pMsg->teid);
|
||||
msgHdr += 4;
|
||||
|
||||
if(pMsg->seqNumFlag | pMsg->extHdrFlag | pMsg->npduNumFlag)
|
||||
{
|
||||
if(pMsg->seqNumFlag)
|
||||
{
|
||||
*((NwU16T*) msgHdr) = htons((pTrxn ? pTrxn->seqNum : pMsg->seqNum));
|
||||
}
|
||||
else
|
||||
{
|
||||
*((NwU16T*) msgHdr) = 0x0000;
|
||||
}
|
||||
msgHdr += 2;
|
||||
|
||||
if(pMsg->npduNumFlag)
|
||||
{
|
||||
*((NwU8T*) msgHdr) = pMsg->npduNumFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
*((NwU8T*) msgHdr) = 0x00;
|
||||
}
|
||||
msgHdr++;
|
||||
|
||||
if(pMsg->extHdrFlag)
|
||||
{
|
||||
*((NwU8T*) msgHdr) = pMsg->extHdrFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
*((NwU8T*) msgHdr) = 0x00;
|
||||
}
|
||||
msgHdr++;
|
||||
}
|
||||
|
||||
NW_ASSERT(thiz->udp.udpDataReqCallback != NULL);
|
||||
|
||||
rc = thiz->udp.udpDataReqCallback(thiz->udp.hUdp,
|
||||
pMsg->msgBuf,
|
||||
pMsg->msgLen,
|
||||
peerIp,
|
||||
peerPort);
|
||||
|
||||
/* Save the message for retransmission */
|
||||
if(rc == NW_GTPV1U_OK && pTrxn)
|
||||
{
|
||||
pTrxn->pMsg = pMsg;
|
||||
pTrxn->peerIp = peerIp;
|
||||
pTrxn->peerPort = peerPort;
|
||||
|
||||
rc = nwGtpv1uTrxnStartPeerRspTimer(pTrxn, nwGtpv1uTrxnPeerRspTimeout);
|
||||
NW_ASSERT(rc == NW_GTPV1U_OK);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "NwTypes.h"
|
||||
#include "NwUtils.h"
|
||||
#include "NwGtpv1uError.h"
|
||||
#include "NwGtpv1uPrivate.h"
|
||||
#include "NwGtpv1uMsg.h"
|
||||
#include "NwGtpv1uTunnelEndPoint.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uLog.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P R I V A T E D E C L A R A T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static NwGtpv1uTunnelEndPointT *gpTunnelEndPointPool = NULL;
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* P U B L I C F U N C T I O N S *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
Constructor
|
||||
|
||||
@param[in] msid: MSID
|
||||
@param[in] peerAddr: Address of the peer.
|
||||
@return Pointer to Session on success, NULL on failure.
|
||||
*/
|
||||
|
||||
|
||||
NwGtpv1uTunnelEndPointT*
|
||||
nwGtpTunnelEndPointNew(struct NwGtpv1uStack *pStack)
|
||||
{
|
||||
NwGtpv1uTunnelEndPointT* thiz;
|
||||
if(gpTunnelEndPointPool)
|
||||
{
|
||||
thiz = gpTunnelEndPointPool;
|
||||
gpTunnelEndPointPool = gpTunnelEndPointPool->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_GTPV1U_MALLOC(pStack, sizeof(NwGtpv1uTunnelEndPointT), thiz, NwGtpv1uTunnelEndPointT*);
|
||||
}
|
||||
|
||||
return thiz;
|
||||
}
|
||||
|
||||
/**
|
||||
Destructor
|
||||
|
||||
@param[in] thiz: Pointer to session
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpTunnelEndPointDestroy(struct NwGtpv1uStack *pStack, NwGtpv1uTunnelEndPointT* thiz)
|
||||
{
|
||||
thiz->next = gpTunnelEndPointPool;
|
||||
gpTunnelEndPointPool = thiz;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
Purge a Transaction for a Session.
|
||||
|
||||
@param[in] thiz: Pointer to session
|
||||
@param[in,out] pTrxn: Pointer to the trxn.
|
||||
@return NW_GTPV1U_OK on success.
|
||||
*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwGtpSessionSendMsgApiToUlpEntity(NwGtpv1uTunnelEndPointT* thiz,
|
||||
NwGtpv1uMsgT *pMsg)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwGtpv1uUlpApiT api;
|
||||
|
||||
api.apiType = NW_GTPV1U_ULP_API_RECV_TPDU;
|
||||
api.apiInfo.recvMsgInfo.hUlpSession = thiz->hUlpSession;
|
||||
api.apiInfo.recvMsgInfo.teid = thiz->teid;
|
||||
api.apiInfo.recvMsgInfo.hMsg = (NwGtpv1uMsgHandleT)pMsg;
|
||||
|
||||
NW_ASSERT(thiz->pStack->ulp.ulpReqCallback != NULL);
|
||||
|
||||
thiz->pStack->ulp.ulpReqCallback(thiz->pStack->ulp.hUlp, &api);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* E N D O F F I L E *
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# this is example-file: Makefile.am
|
||||
|
||||
# the subdirectories of the project to go into
|
||||
SUBDIRS = \
|
||||
nw-helloworld
|
||||
@@ -1,461 +0,0 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# this is example-file: Makefile.am
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = nw-gtpv1u/test-app
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
# the subdirectories of the project to go into
|
||||
SUBDIRS = \
|
||||
nw-helloworld
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu nw-gtpv1u/test-app/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu nw-gtpv1u/test-app/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic ctags \
|
||||
ctags-recursive distclean distclean-generic distclean-tags \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||
tags-recursive uninstall uninstall-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,17 +0,0 @@
|
||||
bin_PROGRAMS = helloworld
|
||||
|
||||
AM_CFLAGS = -D__WITH_LIBEVENT__ -I../../shared -I../../include -I../../test-app/nw-udp -I../../test-app/nw-log @AM_CFLAGS@
|
||||
|
||||
helloworld_SOURCES = \
|
||||
NwEvt.h\
|
||||
NwMiniLogMgrEntity.h\
|
||||
NwMiniTmrMgrEntity.h\
|
||||
NwMiniUlpEntity.h\
|
||||
NwMiniUdpEntity.h\
|
||||
NwMiniLogMgrEntity.c\
|
||||
NwMiniTmrMgrEntity.c\
|
||||
NwMiniUlpEntity.c\
|
||||
NwMiniUdpEntity.c\
|
||||
helloworld.c
|
||||
|
||||
helloworld_LDADD = ../../src/libNwGtpv1u.a -levent $(AM_LDFLAGS)
|
||||
@@ -1,433 +0,0 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
bin_PROGRAMS = helloworld$(EXEEXT)
|
||||
subdir = nw-gtpv1u/test-app/nw-helloworld
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_helloworld_OBJECTS = NwMiniLogMgrEntity.$(OBJEXT) \
|
||||
NwMiniTmrMgrEntity.$(OBJEXT) NwMiniUlpEntity.$(OBJEXT) \
|
||||
NwMiniUdpEntity.$(OBJEXT) helloworld.$(OBJEXT)
|
||||
helloworld_OBJECTS = $(am_helloworld_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
helloworld_DEPENDENCIES = ../../src/libNwGtpv1u.a \
|
||||
$(am__DEPENDENCIES_1)
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(helloworld_SOURCES)
|
||||
DIST_SOURCES = $(helloworld_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = -D__WITH_LIBEVENT__ -I../../shared -I../../include -I../../test-app/nw-udp -I../../test-app/nw-log @AM_CFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
helloworld_SOURCES = \
|
||||
NwEvt.h\
|
||||
NwMiniLogMgrEntity.h\
|
||||
NwMiniTmrMgrEntity.h\
|
||||
NwMiniUlpEntity.h\
|
||||
NwMiniUdpEntity.h\
|
||||
NwMiniLogMgrEntity.c\
|
||||
NwMiniTmrMgrEntity.c\
|
||||
NwMiniUlpEntity.c\
|
||||
NwMiniUdpEntity.c\
|
||||
helloworld.c
|
||||
|
||||
helloworld_LDADD = ../../src/libNwGtpv1u.a -levent $(AM_LDFLAGS)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu nw-gtpv1u/test-app/nw-helloworld/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu nw-gtpv1u/test-app/nw-helloworld/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
helloworld$(EXEEXT): $(helloworld_OBJECTS) $(helloworld_DEPENDENCIES)
|
||||
@rm -f helloworld$(EXEEXT)
|
||||
$(LINK) $(helloworld_OBJECTS) $(helloworld_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwMiniLogMgrEntity.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwMiniTmrMgrEntity.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwMiniUdpEntity.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NwMiniUlpEntity.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/helloworld.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic ctags distclean distclean-compile \
|
||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-binPROGRAMS \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||
uninstall-am uninstall-binPROGRAMS
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,81 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* Copyright (c) 2010-2011 Amit Chawre *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* *
|
||||
* 1. Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* 2. 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. *
|
||||
* 3. The name of the author may not be used to endorse or promote products *
|
||||
* derived from this software without specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR *
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __NW_EVT_H__
|
||||
#define __NW_EVT_H__
|
||||
/**
|
||||
* @file NwEvt.h
|
||||
* @brief
|
||||
*/
|
||||
|
||||
#ifdef __WITH_LIBEVENT__
|
||||
|
||||
#include <event.h>
|
||||
|
||||
typedef struct event NwEventT;
|
||||
|
||||
#define NW_EVT_READ (EV_READ)
|
||||
#define NW_EVT_PERSIST (EV_PERSIST)
|
||||
#define NW_EVT_CALLBACK(__cbFunc) __cbFunc(int fd, short event, void *arg)
|
||||
#define NW_TMR_CALLBACK(__cbFunc) __cbFunc(int fd, short event, void *arg)
|
||||
|
||||
#define NW_EVT_INIT event_init
|
||||
#define NW_EVT_LOOP event_dispatch
|
||||
|
||||
#define NW_EVENT_ADD(__ev, __evSelObj, __evCallback, __evCallbackArg, __evFlags) \
|
||||
do { \
|
||||
event_set(&(__ev), __evSelObj, __evFlags, __evCallback, __evCallbackArg); \
|
||||
event_add(&(__ev), NULL); \
|
||||
} while(0)
|
||||
|
||||
#else
|
||||
|
||||
#warning "Event library not defined!"
|
||||
|
||||
/* HACK : Defining dummy values for compilation!*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int __tbd;
|
||||
} NwEventT;
|
||||
|
||||
#define NW_EVT_READ (0)
|
||||
#define NW_EVT_PERSIST (1)
|
||||
#define NW_EVT_CALLBACK(__cbFunc) __cbFunc(void *arg)
|
||||
#define NW_TMR_CALLBACK(__cbFunc) __cbFunc(void *arg)
|
||||
|
||||
|
||||
#define NW_EVT_INIT() do { printf("error: Event library not defined!\n"); exit (0); } while(0)
|
||||
#define NW_EVT_LOOP() do { printf("error: Event library not defined!\n"); exit (0); } while(0)
|
||||
#define NW_EVENT_ADD(...) do { printf("error: Event library not defined!\n"); exit (0); } while(0)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __NW_EVT_H__ */
|
||||
@@ -1,58 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C L O G M G R E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file hello-world.c
|
||||
* @brief This file contains example of a minimalistic log manager entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwLog.h"
|
||||
#include "NwEvt.h"
|
||||
#include "NwGtpv1u.h"
|
||||
|
||||
#include "NwMiniLogMgrEntity.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwU32T g_log_level = NW_LOG_LEVEL_INFO;
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Public functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT nwMiniLogMgrInit(NwMiniLogMgrT* thiz, NwU32T logLevel )
|
||||
{
|
||||
thiz->logLevel = logLevel;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT nwMiniLogMgrSetLogLevel(NwMiniLogMgrT* thiz, NwU32T logLevel)
|
||||
{
|
||||
thiz->logLevel = logLevel;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT nwMiniLogMgrLogRequest (NwGtpv1uLogMgrHandleT hLogMgr,
|
||||
NwU32T logLevel,
|
||||
NwCharT* file,
|
||||
NwU32T line,
|
||||
NwCharT* logStr)
|
||||
{
|
||||
NwMiniLogMgrT* thiz = (NwMiniLogMgrT*) hLogMgr;
|
||||
if(thiz->logLevel >= logLevel)
|
||||
printf("NWGTPv2U-STK %s - %s <%s,%u>\n", gLogLevelStr[logLevel], logStr, basename(file), line);
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C L O G M G R E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file hello-world.c
|
||||
* @brief This file contains example of a minimalistic log manager entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwLog.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#ifndef __NW_MINI_LOG_MGR_H__
|
||||
#define __NW_MINI_LOG_MGR_H__
|
||||
|
||||
extern NwU32T g_log_level;
|
||||
|
||||
|
||||
#define NW_LOG( _logLevel, ...) \
|
||||
do { \
|
||||
if(g_log_level >= _logLevel) \
|
||||
{ \
|
||||
char _logStr[1024]; \
|
||||
snprintf(_logStr, 1024, __VA_ARGS__); \
|
||||
printf("NWGTPv2U-APP %s - %s <%s,%u>\n", gLogLevelStr[_logLevel], _logStr, basename(__FILE__), __LINE__);\
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwU8T logLevel;
|
||||
} NwMiniLogMgrT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwGtpv1uRcT nwMiniLogMgrLogRequest (NwGtpv1uLogMgrHandleT logMgrHandle,
|
||||
NwU32T logLevel,
|
||||
NwCharT* file,
|
||||
NwU32T line,
|
||||
NwCharT* logStr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,98 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C T M R M G R E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file NwMiniTmrMgrEntity.c
|
||||
* @brief This file ontains example of a minimalistic timer manager entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwMiniLogMgrEntity.h"
|
||||
#include "NwMiniTmrMgrEntity.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Private functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
NW_TMR_CALLBACK(nwMiniTmrMgrHandleTimeout)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwMiniTmrMgrEntityT *pTmr = (NwMiniTmrMgrEntityT*) arg;
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Send Timeout Request to GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwGtpv1uProcessTimeout(pTmr->timeoutArg);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
free(pTmr);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Public functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT nwTimerStart( NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwU32T timeoutSec,
|
||||
NwU32T timeoutUsec,
|
||||
NwU32T tmrType,
|
||||
void* timeoutArg,
|
||||
NwGtpv1uTimerHandleT* hTmr)
|
||||
{
|
||||
NwGtpv1uRcT rc = NW_GTPV1U_OK;
|
||||
NwMiniTmrMgrEntityT *pTmr;
|
||||
struct timeval tv;
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_INFO, "Received start timer request from stack with timer type %u, arg %x, for %u sec and %u usec", tmrType, timeoutArg, timeoutSec, timeoutUsec);
|
||||
|
||||
pTmr = (NwMiniTmrMgrEntityT*) malloc (sizeof(NwMiniTmrMgrEntityT));
|
||||
|
||||
/* set the timevalues*/
|
||||
timerclear(&tv);
|
||||
tv.tv_sec = timeoutSec;
|
||||
tv.tv_usec = timeoutUsec;
|
||||
|
||||
pTmr->timeoutArg = timeoutArg;
|
||||
evtimer_set(&pTmr->ev, nwMiniTmrMgrHandleTimeout, pTmr);
|
||||
|
||||
/*add event*/
|
||||
|
||||
event_add(&(pTmr->ev), &tv);
|
||||
|
||||
*hTmr = (NwGtpv1uTimerHandleT)pTmr;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT nwTimerStop( NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwGtpv1uTimerHandleT hTmr)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_INFO, "Received stop timer request from stack for timer handle %u", hTmr);
|
||||
evtimer_del(&(((NwMiniTmrMgrEntityT*)hTmr)->ev));
|
||||
free((void*)hTmr);
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -1,54 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C T M R M G R E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* @file NwMiniTmrMgrEntity.c
|
||||
* @brief This file ontains example of a minimalistic timer manager entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwLog.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#ifndef __NW_MINI_TMR_MGR_H__
|
||||
#define __NW_MINI_TMR_MGR_H__
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwEventT ev;
|
||||
void* timeoutArg;
|
||||
} NwMiniTmrMgrEntityT;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwGtpv1uRcT nwTimerStart( NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwU32T timeoutSec,
|
||||
NwU32T timeoutUsec,
|
||||
NwU32T tmrType,
|
||||
void* timeoutArg,
|
||||
NwGtpv1uTimerHandleT* hTmr);
|
||||
|
||||
|
||||
NwGtpv1uRcT nwTimerStop( NwGtpv1uTimerMgrHandleT tmrMgrHandle,
|
||||
NwGtpv1uTimerHandleT hTmr);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,155 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C U D P E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* @file NwMiniUdpEntity.c
|
||||
* @brief This file contains example of a minimalistic ULP entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "NwEvt.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwMiniLogMgrEntity.h"
|
||||
#include "NwMiniUdpEntity.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#define MAX_UDP_PAYLOAD_LEN (4096)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Private functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
void NW_TMR_CALLBACK(nwUdpDataIndicationCallbackData)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwU8T udpBuf[MAX_UDP_PAYLOAD_LEN];
|
||||
NwS32T bytesRead;
|
||||
NwU32T peerLen;
|
||||
struct sockaddr_in peer;
|
||||
NwMiniUdpEntityT* thiz = (NwMiniUdpEntityT*) arg;
|
||||
|
||||
peerLen = sizeof(peer);
|
||||
|
||||
bytesRead = recvfrom(thiz->hSocket, udpBuf, MAX_UDP_PAYLOAD_LEN , 0, (struct sockaddr *) &peer,(socklen_t*) &peerLen);
|
||||
if(bytesRead)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Received UDP message of length %u from %X:%u", bytesRead, ntohl(peer.sin_addr.s_addr), ntohs(peer.sin_port));
|
||||
rc = nwGtpv1uProcessUdpReq(thiz->hGtpv1uStack, udpBuf, bytesRead, peer.sin_port, peer.sin_addr.s_addr);
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Public functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpInit(NwMiniUdpEntityT* thiz, NwGtpv1uStackHandleT hGtpv1uStack, NwU8T* ipAddr)
|
||||
{
|
||||
int sd;
|
||||
struct sockaddr_in addr;
|
||||
|
||||
sd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
||||
if (sd < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(2152);
|
||||
addr.sin_addr.s_addr = inet_addr(ipAddr);
|
||||
memset(addr.sin_zero, '\0', sizeof (addr.sin_zero));
|
||||
|
||||
if(bind(sd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
|
||||
event_set(&(thiz->ev), sd, EV_READ|EV_PERSIST, nwUdpDataIndicationCallbackData, thiz);
|
||||
event_add(&(thiz->ev), NULL);
|
||||
|
||||
thiz->hSocket = sd;
|
||||
thiz->hGtpv1uStack = hGtpv1uStack;
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpDestroy(NwMiniUdpEntityT* thiz)
|
||||
{
|
||||
close(thiz->hSocket);
|
||||
}
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpDataReq(NwGtpv1uUdpHandleT udpHandle,
|
||||
NwU8T* dataBuf,
|
||||
NwU32T dataSize,
|
||||
NwU32T peerIpAddr,
|
||||
NwU32T peerPort)
|
||||
{
|
||||
struct sockaddr_in peerAddr;
|
||||
NwS32T bytesSent;
|
||||
NwMiniUdpEntityT* thiz = (NwMiniUdpEntityT*) udpHandle;
|
||||
|
||||
peerAddr.sin_family = AF_INET;
|
||||
peerAddr.sin_port = htons(peerPort);
|
||||
peerAddr.sin_addr.s_addr = (peerIpAddr);
|
||||
memset(peerAddr.sin_zero, '\0', sizeof (peerAddr.sin_zero));
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Sending %u bytes on handle 0x%x to peer %u.%u.%u.%u:%u", dataSize, udpHandle,
|
||||
(peerIpAddr & 0x000000ff),
|
||||
(peerIpAddr & 0x0000ff00) >> 8,
|
||||
(peerIpAddr & 0x00ff0000) >> 16,
|
||||
(peerIpAddr & 0xff000000) >> 24,
|
||||
peerPort);
|
||||
|
||||
bytesSent = sendto (thiz->hSocket, dataBuf, dataSize, 0, (struct sockaddr *) &peerAddr, sizeof(peerAddr));
|
||||
|
||||
if(bytesSent < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Sent %u bytes on handle 0x%x to peer %u.%u.%u.%u", dataSize, udpHandle,
|
||||
(peerIpAddr & 0x000000ff),
|
||||
(peerIpAddr & 0x0000ff00) >> 8,
|
||||
(peerIpAddr & 0x00ff0000) >> 16,
|
||||
(peerIpAddr & 0xff000000) >> 24);
|
||||
|
||||
}
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C U D P E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* @file NwMiniUdpEntity.h
|
||||
* @brief This file contains example of a minimalistic ULP entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwLog.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#ifndef __NW_MINI_UDP_ENTITY_H__
|
||||
#define __NW_MINI_UDP_ENTITY_H__
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NwU32T hSocket;
|
||||
NwEventT ev;
|
||||
NwGtpv1uStackHandleT hGtpv1uStack;
|
||||
} NwMiniUdpEntityT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpInit(NwMiniUdpEntityT* thiz, NwGtpv1uStackHandleT hGtpv1uStack, NwU8T* ipAddr);
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpDestroy(NwMiniUdpEntityT* thiz);
|
||||
|
||||
NwGtpv1uRcT nwMiniUdpDataReq(NwGtpv1uUdpHandleT udpHandle,
|
||||
NwU8T* dataBuf,
|
||||
NwU32T dataSize,
|
||||
NwU32T peerAddr,
|
||||
NwU32T peerPort);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,304 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C U L P E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file NwMiniUlpEntity.c
|
||||
* @brief This file contains example of a minimalistic ULP entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwGtpv1u.h"
|
||||
#include "NwGtpv1uIe.h"
|
||||
#include "NwMiniLogMgrEntity.h"
|
||||
#include "NwMiniUlpEntity.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Private Functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
#define MAX_UDP_PAYLOAD_LEN (4096)
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpSendEchoRequestToPeer(NwMiniUlpEntityT* thiz, NwU32T peerIp)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uUlpApiT ulpReq;
|
||||
|
||||
/*
|
||||
* Send Message Request to Gtpv1u Stack Instance
|
||||
*/
|
||||
|
||||
ulpReq.apiType = NW_GTPV1U_ULP_API_INITIAL_REQ;
|
||||
|
||||
ulpReq.apiInfo.initialReqInfo.hUlpTrxn = (NwGtpv1uUlpTrxnHandleT)thiz;
|
||||
ulpReq.apiInfo.initialReqInfo.teid = 0x00;
|
||||
ulpReq.apiInfo.initialReqInfo.peerIp = (peerIp);
|
||||
ulpReq.apiInfo.initialReqInfo.peerPort = 2152;
|
||||
|
||||
/* Send Echo Request*/
|
||||
|
||||
rc = nwGtpv1uMsgNew( thiz->hGtpv1uStack,
|
||||
NW_TRUE, /* SeqNum flag */
|
||||
NW_FALSE,
|
||||
NW_FALSE,
|
||||
NW_GTP_ECHO_REQ, /* Msg Type */
|
||||
0x00000000UL, /* TEID */
|
||||
0x5678, /* Seq Number */
|
||||
0,
|
||||
0,
|
||||
(&ulpReq.hMsg));
|
||||
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
rc = nwGtpv1uMsgAddIeTV1((ulpReq.hMsg), NW_GTPV1U_IE_RECOVERY, thiz->restartCounter);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
rc = nwGtpv1uProcessUlpReq(thiz->hGtpv1uStack, &ulpReq);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
static
|
||||
void NW_EVT_CALLBACK(nwMiniUlpDataIndicationCallbackData)
|
||||
{
|
||||
NwMiniUlpEntityT* thiz = (NwMiniUlpEntityT*) arg;
|
||||
NwGtpv1uRcT rc;
|
||||
NwU8T udpBuf[MAX_UDP_PAYLOAD_LEN];
|
||||
NwS32T bytesRead;
|
||||
NwU32T peerLen;
|
||||
struct sockaddr_in peer;
|
||||
|
||||
peerLen = sizeof(peer);
|
||||
|
||||
bytesRead = recvfrom(thiz->hSocket, udpBuf, MAX_UDP_PAYLOAD_LEN , 0, (struct sockaddr *) &peer,(socklen_t*) &peerLen);
|
||||
if(bytesRead)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Received UDP message of length %u from %X:%u", bytesRead, ntohl(peer.sin_addr.s_addr), ntohs(peer.sin_port));
|
||||
rc = nwMiniUlpTpduSend(thiz, udpBuf, bytesRead, thiz->localPort[fd]);
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Public Functions
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpInit(NwMiniUlpEntityT* thiz, NwGtpv1uStackHandleT hGtpv1uStack)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
thiz->hGtpv1uStack = hGtpv1uStack;
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpDestroy(NwMiniUlpEntityT* thiz)
|
||||
{
|
||||
NW_ASSERT(thiz);
|
||||
memset(thiz, 0, sizeof(NwMiniUlpEntityT));
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpCreateConn(NwMiniUlpEntityT* thiz, char* localIpStr, NwU16T localport, char* peerIpStr)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
int sd;
|
||||
struct sockaddr_in addr;
|
||||
NwGtpv1uUlpApiT ulpReq;
|
||||
|
||||
strcpy(thiz->peerIpStr, peerIpStr);
|
||||
|
||||
/*
|
||||
* Create local tunnel endpoint
|
||||
*/
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_NOTI, "Creating tunnel endpoint with teid %d", localport);
|
||||
ulpReq.apiType = NW_GTPV1U_ULP_API_CREATE_TUNNEL_ENDPOINT;
|
||||
ulpReq.apiInfo.createTunnelEndPointInfo.teid = localport;
|
||||
ulpReq.apiInfo.createTunnelEndPointInfo.hUlpSession = (NwGtpv1uUlpSessionHandleT)thiz;
|
||||
|
||||
rc = nwGtpv1uProcessUlpReq(thiz->hGtpv1uStack, &ulpReq);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
thiz->hGtpv1uConn = ulpReq.apiInfo.createTunnelEndPointInfo.hStackSession;
|
||||
|
||||
/*
|
||||
* Create local udp listening endpoint
|
||||
*/
|
||||
|
||||
sd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
||||
if (sd < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(localport);
|
||||
addr.sin_addr.s_addr = inet_addr(localIpStr);
|
||||
memset(addr.sin_zero, '\0', sizeof (addr.sin_zero));
|
||||
|
||||
if(bind(sd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
|
||||
event_set(&(thiz->ev[sd]), sd, EV_READ|EV_PERSIST, nwMiniUlpDataIndicationCallbackData, thiz);
|
||||
event_add(&(thiz->ev[sd]), NULL);
|
||||
|
||||
thiz->localPort[sd] = localport;
|
||||
|
||||
/*
|
||||
* Create local udp for sendign data
|
||||
*/
|
||||
|
||||
sd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
||||
if (sd < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
|
||||
|
||||
thiz->hSocket = sd;
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpDestroyConn(NwMiniUlpEntityT* thiz)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uUlpApiT ulpReq;
|
||||
/*---------------------------------------------------------------------------
|
||||
* Send Destroy Session Request to GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
ulpReq.apiType = NW_GTPV1U_ULP_API_DESTROY_TUNNEL_ENDPOINT;
|
||||
ulpReq.apiInfo.destroyTunnelEndPointInfo.hStackSessionHandle = thiz->hGtpv1uConn;
|
||||
|
||||
rc = nwGtpv1uProcessUlpReq(thiz->hGtpv1uStack, &ulpReq);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
thiz->hGtpv1uConn = 0;
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpTpduSend(NwMiniUlpEntityT* thiz, NwU8T* tpduBuf, NwU32T tpduLen , NwU16T fromPort)
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
NwGtpv1uUlpApiT ulpReq;
|
||||
|
||||
/*
|
||||
* Send Message Request to GTPv1u Stack Instance
|
||||
*/
|
||||
|
||||
ulpReq.apiType = NW_GTPV1U_ULP_API_SEND_TPDU;
|
||||
ulpReq.apiInfo.sendtoInfo.teid = fromPort;
|
||||
ulpReq.apiInfo.sendtoInfo.ipAddr = inet_addr(thiz->peerIpStr);
|
||||
|
||||
rc = nwGtpv1uGpduMsgNew( thiz->hGtpv1uStack,
|
||||
fromPort,
|
||||
NW_FALSE,
|
||||
thiz->seqNum++,
|
||||
tpduBuf,
|
||||
tpduLen,
|
||||
&(ulpReq.apiInfo.sendtoInfo.hMsg));
|
||||
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
rc = nwGtpv1uProcessUlpReq(thiz->hGtpv1uStack, &ulpReq);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
rc = nwGtpv1uMsgDelete(thiz->hGtpv1uStack, (ulpReq.apiInfo.sendtoInfo.hMsg));
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpProcessStackReqCallback (NwGtpv1uUlpHandleT hUlp,
|
||||
NwGtpv1uUlpApiT *pUlpApi)
|
||||
{
|
||||
NwMiniUlpEntityT* thiz;
|
||||
NW_ASSERT(pUlpApi != NULL);
|
||||
|
||||
thiz = (NwMiniUlpEntityT*) hUlp;
|
||||
|
||||
switch(pUlpApi->apiType)
|
||||
{
|
||||
case NW_GTPV1U_ULP_API_RECV_TPDU:
|
||||
{
|
||||
struct sockaddr_in peerAddr;
|
||||
NwS32T bytesSent;
|
||||
NwU8T dataBuf[4096];
|
||||
NwU32T dataSize;
|
||||
NwU32T peerIpAddr = (inet_addr(thiz->peerIpStr));
|
||||
|
||||
NW_ASSERT( NW_GTPV1U_OK == nwGtpv1uMsgGetTpdu(pUlpApi->apiInfo.recvMsgInfo.hMsg, dataBuf, &dataSize) );
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Received TPDU from gtpv1u stack %u!", pUlpApi->apiInfo.recvMsgInfo.teid);
|
||||
|
||||
peerAddr.sin_family = AF_INET;
|
||||
peerAddr.sin_port = htons(pUlpApi->apiInfo.recvMsgInfo.teid);
|
||||
peerAddr.sin_addr.s_addr = (peerIpAddr);
|
||||
memset(peerAddr.sin_zero, '\0', sizeof (peerAddr.sin_zero));
|
||||
|
||||
bytesSent = sendto (thiz->hSocket, dataBuf, dataSize, 0, (struct sockaddr *) &peerAddr, sizeof(peerAddr));
|
||||
|
||||
if(bytesSent < 0)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "%s", strerror(errno));
|
||||
NW_ASSERT(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_DEBG, "Sent %u bytes to peer %u.%u.%u.%u", dataSize,
|
||||
(peerIpAddr & 0x000000ff),
|
||||
(peerIpAddr & 0x0000ff00) >> 8,
|
||||
(peerIpAddr & 0x00ff0000) >> 16,
|
||||
(peerIpAddr & 0xff000000) >> 24);
|
||||
}
|
||||
|
||||
NW_ASSERT(nwGtpv1uMsgDelete(thiz->hGtpv1uStack, (pUlpApi->apiInfo.recvMsgInfo.hMsg)) == NW_GTPV1U_OK);
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NW_LOG(NW_LOG_LEVEL_WARN, "Received undefined UlpApi (%d) from gtpv1u stack!",pUlpApi->apiType);
|
||||
}
|
||||
return NW_GTPV1U_OK;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* M I N I M A L I S T I C U L P E N T I T Y *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @file NwMiniUlpEntity.h
|
||||
* @brief This file contains example of a minimalistic ULP entity.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwLog.h"
|
||||
|
||||
#ifndef __NW_MINI_ULP_H__
|
||||
#define __NW_MINI_ULP_H__
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int hSocket;
|
||||
NwU16T seqNum;
|
||||
NwU8T restartCounter;
|
||||
NwU8T localIpStr[16];
|
||||
NwU8T peerIpStr[16];
|
||||
NwU32T localPort[1025];
|
||||
NwEventT ev[1025];
|
||||
NwGtpv1uStackHandleT hGtpv1uStack;
|
||||
NwGtpv1uStackSessionHandleT hGtpv1uConn;
|
||||
} NwMiniUlpEntityT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpInit(NwMiniUlpEntityT* thiz, NwGtpv1uStackHandleT hGtpv1uStack);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpDestroy(NwMiniUlpEntityT* thiz);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpCreateConn(NwMiniUlpEntityT* thiz, char* localIpStr, NwU16T localPort, char* peerIpStr);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpDestroyConn(NwMiniUlpEntityT* thiz);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpSendMsg(NwMiniUlpEntityT* thiz);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpTpduSend(NwMiniUlpEntityT* thiz, NwU8T* tpduBuf, NwU32T tpduLen , NwU16T fromPort);
|
||||
|
||||
NwGtpv1uRcT
|
||||
nwMiniUlpProcessStackReqCallback (NwGtpv1uUlpHandleT hUlp,
|
||||
NwGtpv1uUlpApiT *pUlpApi);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,211 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*
|
||||
* *
|
||||
* n w - g t p v 2 u *
|
||||
* G P R S T u n n e l i n g P r o t o c o l v 2 u S t a c k *
|
||||
* *
|
||||
* M I N I M A L I S T I C D E M O N S T R A T I O N *
|
||||
* *
|
||||
* Copyright (C) 2010 Amit Chawre. *
|
||||
* *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* @file hello-world.c
|
||||
* @brief This is a test program demostrating usage of nw-gtpv2 library.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "NwEvt.h"
|
||||
#include "NwGtpv1u.h"
|
||||
|
||||
#include "NwMiniLogMgrEntity.h"
|
||||
#include "NwMiniTmrMgrEntity.h"
|
||||
#include "NwMiniUdpEntity.h"
|
||||
#include "NwMiniUlpEntity.h"
|
||||
|
||||
#ifndef NW_ASSERT
|
||||
#define NW_ASSERT assert
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* T H E M A I N F U N C T I O N
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
NwGtpv1uRcT rc;
|
||||
char* logLevelStr;
|
||||
NwU32T logLevel;
|
||||
NwU32T num_of_connections;
|
||||
|
||||
NwGtpv1uStackHandleT hGtpv1uStack = 0;
|
||||
NwMiniUlpEntityT ulpObj;
|
||||
NwMiniUdpEntityT udpObj;
|
||||
NwMiniLogMgrT logObj;
|
||||
NwGtpv1uUlpEntityT ulp;
|
||||
NwGtpv1uUdpEntityT udp;
|
||||
NwGtpv1uTimerMgrEntityT tmrMgr;
|
||||
NwGtpv1uLogMgrEntityT logMgr;
|
||||
|
||||
if(argc != 4)
|
||||
{
|
||||
printf("Usage: %s <num-of-connections> <local-ip> <peer-ip>\n", argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
logLevelStr = getenv ("NW_LOG_LEVEL");
|
||||
|
||||
if(logLevelStr == NULL)
|
||||
{
|
||||
logLevel = NW_LOG_LEVEL_INFO;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(strncmp(logLevelStr, "EMER",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_EMER;
|
||||
else if(strncmp(logLevelStr, "ALER",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_ALER;
|
||||
else if(strncmp(logLevelStr, "CRIT",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_CRIT;
|
||||
else if(strncmp(logLevelStr, "ERRO",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_ERRO ;
|
||||
else if(strncmp(logLevelStr, "WARN",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_WARN;
|
||||
else if(strncmp(logLevelStr, "NOTI",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_NOTI;
|
||||
else if(strncmp(logLevelStr, "INFO",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_INFO;
|
||||
else if(strncmp(logLevelStr, "DEBG",4) == 0)
|
||||
logLevel = NW_LOG_LEVEL_DEBG;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Initialize event library
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NW_EVT_INIT();
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Initialize Log Manager
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
nwMiniLogMgrInit(&logObj, logLevel);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Create GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwGtpv1uInitialize(&hGtpv1uStack);
|
||||
|
||||
if(rc != NW_GTPV1U_OK)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "Failed to create gtpv1u stack instance. Error '%u' occured", rc);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_INFO, "Gtpv1u Stack Handle '%X' Creation Successful!", hGtpv1uStack);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Set up Ulp Entity
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwMiniUlpInit(&ulpObj, hGtpv1uStack);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
ulp.hUlp = (NwGtpv1uUlpHandleT) &ulpObj;
|
||||
ulp.ulpReqCallback = nwMiniUlpProcessStackReqCallback;
|
||||
|
||||
rc = nwGtpv1uSetUlpEntity(hGtpv1uStack, &ulp);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Set up Udp Entity
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwMiniUdpInit(&udpObj, hGtpv1uStack, (argv[2]));
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
udp.hUdp = (NwGtpv1uUdpHandleT) &udpObj;
|
||||
udp.udpDataReqCallback = nwMiniUdpDataReq;
|
||||
|
||||
rc = nwGtpv1uSetUdpEntity(hGtpv1uStack, &udp);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Set up Log Entity
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
tmrMgr.tmrMgrHandle = 0;
|
||||
tmrMgr.tmrStartCallback = nwTimerStart;
|
||||
tmrMgr.tmrStopCallback = nwTimerStop;
|
||||
|
||||
rc = nwGtpv1uSetTimerMgrEntity(hGtpv1uStack, &tmrMgr);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Set up Log Entity
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
logMgr.logMgrHandle = (NwGtpv1uLogMgrHandleT) &logObj;
|
||||
logMgr.logReqCallback = nwMiniLogMgrLogRequest;
|
||||
|
||||
rc = nwGtpv1uSetLogMgrEntity(hGtpv1uStack, &logMgr);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Set GTPv1u log level
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwGtpv1uSetLogLevel(hGtpv1uStack, logLevel);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Send Create Session Request to GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
num_of_connections = atoi(argv[1]);
|
||||
|
||||
while ( num_of_connections-- )
|
||||
{
|
||||
//rc = nwMiniUlpCreateConn(&ulpObj, argv[2], 1234 + num_of_connections, argv[3]);
|
||||
rc = nwMiniUlpSendEchoRequestToPeer(&ulpObj, inet_addr(argv[3]));
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Event loop
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
NW_EVT_LOOP();
|
||||
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "Exit from eventloop, no events to process!");
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Send Destroy Session Request to GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwMiniUlpDestroyConn(&ulpObj);
|
||||
NW_ASSERT( rc == NW_GTPV1U_OK );
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
* Destroy GTPv1u Stack Instance
|
||||
*--------------------------------------------------------------------------*/
|
||||
|
||||
rc = nwGtpv1uFinalize(hGtpv1uStack);
|
||||
|
||||
if(rc != NW_GTPV1U_OK)
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_ERRO, "Failed to finalize gtpv1u stack instance. Error '%u' occured", rc);
|
||||
}
|
||||
else
|
||||
{
|
||||
NW_LOG(NW_LOG_LEVEL_INFO, "Gtpv1u Stack Handle '%X' Finalize Successful!", hGtpv1uStack);
|
||||
}
|
||||
|
||||
|
||||
return rc;
|
||||
}
|
||||
@@ -1,365 +0,0 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ \
|
||||
-I$(top_srcdir)/UTILS
|
||||
|
||||
noinst_LTLIBRARIES = libitti.la
|
||||
|
||||
libitti_la_LDFLAGS = -all-static
|
||||
libitti_la_SOURCES = \
|
||||
gtpv1_u_messages_def.h gtpv1_u_messages_types.h \
|
||||
timer_messages_def.h timer_messages_types.h \
|
||||
s1ap_messages_def.h s1ap_messages_types.h \
|
||||
s6a_messages_def.h s6a_messages_types.h \
|
||||
sgw_lite_def.h sgw_lite_messages_types.h \
|
||||
sctp_messages_def.h sctp_messages_types.h \
|
||||
udp_message_def.h udp_messages_types.h \
|
||||
intertask_interface.c intertask_interface.h \
|
||||
intertask_interface_dump.c intertask_interface_dump.h
|
||||
@@ -1,565 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = INTERTASK_INTERFACE
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depcomp
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libitti_la_LIBADD =
|
||||
am_libitti_la_OBJECTS = intertask_interface.lo \
|
||||
intertask_interface_dump.lo
|
||||
libitti_la_OBJECTS = $(am_libitti_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
libitti_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libitti_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libitti_la_SOURCES)
|
||||
DIST_SOURCES = $(libitti_la_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ \
|
||||
-I$(top_srcdir)/UTILS
|
||||
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
noinst_LTLIBRARIES = libitti.la
|
||||
libitti_la_LDFLAGS = -all-static
|
||||
libitti_la_SOURCES = \
|
||||
gtpv1_u_messages_def.h gtpv1_u_messages_types.h \
|
||||
timer_messages_def.h timer_messages_types.h \
|
||||
s1ap_messages_def.h s1ap_messages_types.h \
|
||||
s6a_messages_def.h s6a_messages_types.h \
|
||||
sgw_lite_def.h sgw_lite_messages_types.h \
|
||||
sctp_messages_def.h sctp_messages_types.h \
|
||||
udp_message_def.h udp_messages_types.h \
|
||||
intertask_interface.c intertask_interface.h \
|
||||
intertask_interface_dump.c intertask_interface_dump.h
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu INTERTASK_INTERFACE/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu INTERTASK_INTERFACE/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
libitti.la: $(libitti_la_OBJECTS) $(libitti_la_DEPENDENCIES) $(EXTRA_libitti_la_DEPENDENCIES)
|
||||
$(AM_V_CCLD)$(libitti_la_LINK) $(libitti_la_OBJECTS) $(libitti_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/intertask_interface.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/intertask_interface_dump.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,2 +0,0 @@
|
||||
MESSAGE_DEF(GTPV1U_DATA_REQ, TASK_PRIORITY_MED, Gtpv1uDataReq gtpv1uDataReq)
|
||||
MESSAGE_DEF(S1U_CREATE_TUNNEL, TASK_PRIORITY_MED_LEAST, S1UCreateTunnel s1uCreateTunnel)
|
||||
@@ -1,15 +0,0 @@
|
||||
#ifndef GTPV1_U_MESSAGES_TYPES_H_
|
||||
#define GTPV1_U_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer;
|
||||
uint32_t buffer_length;
|
||||
uint16_t port;
|
||||
uint32_t peer_addr;
|
||||
} Gtpv1uDataReq;
|
||||
|
||||
typedef struct {
|
||||
|
||||
} S1UCreateTunnel;
|
||||
|
||||
#endif /* GTPV1_U_MESSAGES_TYPES_H_ */
|
||||
@@ -1,241 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "queue.h"
|
||||
|
||||
// Locally define macro to enable task id to string table
|
||||
#define INTERTASK_C
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "intertask_interface_dump.h"
|
||||
|
||||
static int itti_debug = 0;
|
||||
|
||||
#define ITTI_DEBUG(x, args...) do { if (itti_debug) fprintf(stdout, "[ITTI][D]"x, ##args); } \
|
||||
while(0)
|
||||
#define ITTI_ERROR(x, args...) do { fprintf(stdout, "[ITTI][E]"x, ##args); } \
|
||||
while(0)
|
||||
|
||||
/* This list acts as a FIFO of messages received by tasks (RRC, NAS, ...) */
|
||||
struct message_list_s {
|
||||
STAILQ_ENTRY(message_list_s) next_element;
|
||||
|
||||
MessageDef *msg; ///< Pointer to the message
|
||||
|
||||
uint32_t message_number; ///< Unique message number
|
||||
uint32_t message_priority; ///< Message priority
|
||||
};
|
||||
|
||||
/* Message queues: declare a queue for each task */
|
||||
static STAILQ_HEAD(message_queue_head, message_list_s) message_queue[TASK_MAX];
|
||||
/* Number of messages in the queue */
|
||||
static uint32_t message_in_queue[TASK_MAX];
|
||||
/* Mutex for the message queue */
|
||||
static pthread_mutex_t message_queue_mutex[TASK_MAX];
|
||||
/* Conditinal Var for message queue and task synchro */
|
||||
static pthread_cond_t mssage_queue_cond_var[TASK_MAX];
|
||||
|
||||
/* Current message number. Incremented every call to send_msg_to_task */
|
||||
static uint32_t message_number = 0;
|
||||
|
||||
/* Map message priority to message id */
|
||||
const struct message_priority_s messages_priorities[MESSAGES_ID_MAX] = {
|
||||
#define MESSAGE_DEF(iD, pRIO, sTRUCT) { iD, pRIO },
|
||||
|
||||
#include "gtpv1_u_messages_def.h"
|
||||
#include "sctp_messages_def.h"
|
||||
#include "s1ap_messages_def.h"
|
||||
#include "s6a_messages_def.h"
|
||||
#include "timer_messages_def.h"
|
||||
#include "udp_messages_def.h"
|
||||
|
||||
#undef MESSAGE_DEF
|
||||
};
|
||||
|
||||
static inline uint32_t get_message_priority(MessagesIds message_id) {
|
||||
uint32_t i;
|
||||
|
||||
for (i = 0; i < MESSAGES_ID_MAX; i++) {
|
||||
if ((messages_priorities[i]).id == message_id)
|
||||
return ((messages_priorities[i]).priority);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int send_broadcast_message(MessageDef *message_p) {
|
||||
uint32_t i;
|
||||
int ret;
|
||||
|
||||
for (i = TASK_FIRST; i < TASK_MAX; i++) {
|
||||
ret = send_msg_to_task(i, message_p);
|
||||
if (ret < 0) {
|
||||
ITTI_ERROR("Failed to send broadcast message to task (%u:%s)\n",
|
||||
i, tasks_string[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline MessageDef *alloc_new_message(
|
||||
TaskId origin_task_id,
|
||||
TaskId destination_task_id,
|
||||
MessagesIds message_id) {
|
||||
|
||||
MessageDef *temp = NULL;
|
||||
|
||||
if ((origin_task_id >= TASK_MAX) || (destination_task_id >= TASK_MAX) ||
|
||||
(message_id >= MESSAGES_ID_MAX))
|
||||
return NULL;
|
||||
|
||||
temp = (MessageDef *)malloc(sizeof(MessageDef));
|
||||
if (temp == NULL)
|
||||
return temp;
|
||||
|
||||
temp->messageId = message_id;
|
||||
temp->originTaskId = origin_task_id;
|
||||
temp->destinationTaskId = destination_task_id;
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
int send_msg_to_task(TaskId task_id, MessageDef *message)
|
||||
{
|
||||
struct message_list_s *new;
|
||||
uint32_t priority;
|
||||
|
||||
assert(message != NULL);
|
||||
assert(task_id < TASK_MAX);
|
||||
|
||||
priority = get_message_priority(message->messageId);
|
||||
|
||||
// Lock the mutex to get exclusive access to the list
|
||||
pthread_mutex_lock(&message_queue_mutex[task_id]);
|
||||
// Allocate new list element
|
||||
new = (struct message_list_s *)malloc(sizeof(struct message_list_s));
|
||||
|
||||
//Increment message number
|
||||
message_number++;
|
||||
|
||||
// Fill in members
|
||||
new->msg = message;
|
||||
new->message_number = message_number;
|
||||
new->message_priority = priority;
|
||||
|
||||
if (STAILQ_EMPTY(&message_queue[task_id])) {
|
||||
STAILQ_INSERT_HEAD(&message_queue[task_id], new, next_element);
|
||||
} else {
|
||||
struct message_list_s *insert_after = NULL;
|
||||
struct message_list_s *temp;
|
||||
|
||||
STAILQ_FOREACH(temp, &message_queue[task_id], next_element) {
|
||||
struct message_list_s *next;
|
||||
next = STAILQ_NEXT(temp, next_element);
|
||||
/* Increment message priority to create a sort of
|
||||
* priority based scheduler */
|
||||
if (temp->message_priority < TASK_PRIORITY_MAX)
|
||||
temp->message_priority++;
|
||||
if (next && next->message_priority < priority) {
|
||||
insert_after = temp;
|
||||
}
|
||||
}
|
||||
if (insert_after == NULL) {
|
||||
STAILQ_INSERT_TAIL(&message_queue[task_id], new, next_element);
|
||||
} else {
|
||||
STAILQ_INSERT_AFTER(&message_queue[task_id], insert_after, new, next_element);
|
||||
}
|
||||
}
|
||||
|
||||
// Update the number of messages in the queue
|
||||
message_in_queue[task_id]++;
|
||||
if (message_in_queue[task_id] == 1) {
|
||||
// Emit a signal to wake up target task thread
|
||||
pthread_cond_signal(&mssage_queue_cond_var[task_id]);
|
||||
}
|
||||
// Release the mutex
|
||||
pthread_mutex_unlock(&message_queue_mutex[task_id]);
|
||||
ITTI_DEBUG("Message %d with priority %d succesfully sent to task_id (%u:%s)\n",
|
||||
message_number, priority, task_id, tasks_string[task_id]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void receive_msg(TaskId task_id, MessageDef **received_msg)
|
||||
{
|
||||
assert(task_id < TASK_MAX);
|
||||
assert(received_msg != NULL);
|
||||
|
||||
// Lock the mutex to get exclusive access to the list
|
||||
pthread_mutex_lock(&message_queue_mutex[task_id]);
|
||||
|
||||
if (message_in_queue[task_id] == 0) {
|
||||
ITTI_DEBUG("Message in queue[(%u:%s)] == 0, waiting\n",
|
||||
task_id, tasks_string[task_id]);
|
||||
// Wait while list == 0
|
||||
pthread_cond_wait(&mssage_queue_cond_var[task_id], &message_queue_mutex[task_id]);
|
||||
ITTI_DEBUG("Receiver thread queue[(%u:%s)] got new message notification\n",
|
||||
task_id, tasks_string[task_id]);
|
||||
}
|
||||
|
||||
if (!STAILQ_EMPTY(&message_queue[task_id])) {
|
||||
struct message_list_s *temp = STAILQ_FIRST(&message_queue[task_id]);
|
||||
|
||||
// Update received_msg reference
|
||||
*received_msg = temp->msg;
|
||||
|
||||
/* Remove message from queue */
|
||||
STAILQ_REMOVE_HEAD(&message_queue[task_id], next_element);
|
||||
free(temp);
|
||||
message_in_queue[task_id]--;
|
||||
}
|
||||
// Release the mutex
|
||||
pthread_mutex_unlock(&message_queue_mutex[task_id]);
|
||||
}
|
||||
|
||||
void intertask_interface_init(const mme_config_t *mme_config)
|
||||
{
|
||||
int i;
|
||||
/* Initializing each queue and related stuff */
|
||||
for (i = 0; i < TASK_MAX; i++) {
|
||||
STAILQ_INIT(&message_queue[i]);
|
||||
message_in_queue[i] = 0;
|
||||
// Initialize mutexes
|
||||
pthread_mutex_init(&message_queue_mutex[i], NULL);
|
||||
// Initialize Cond vars
|
||||
pthread_cond_init(&mssage_queue_cond_var[i], NULL);
|
||||
}
|
||||
// itti_init();
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
/** @defgroup _intertask_interface_impl_ Intertask Interface Mechanisms
|
||||
* Implementation
|
||||
* @ingroup _ref_implementation_
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "mme_config.h"
|
||||
|
||||
#include "gtpv1_u_messages_types.h"
|
||||
#include "sctp_messages_types.h"
|
||||
#include "s1ap_messages_types.h"
|
||||
#include "s6a_messages_types.h"
|
||||
#include "sgw_lite_messages_types.h"
|
||||
#include "timer_messages_types.h"
|
||||
#include "udp_messages_types.h"
|
||||
|
||||
#ifndef INTERTASK_INTERFACE_H_
|
||||
#define INTERTASK_INTERFACE_H_
|
||||
|
||||
enum task_priorities {
|
||||
TASK_PRIORITY_MAX = 100,
|
||||
TASK_PRIORITY_MAX_LEAST = 85,
|
||||
TASK_PRIORITY_MED_PLUS = 70,
|
||||
TASK_PRIORITY_MED = 55,
|
||||
TASK_PRIORITY_MED_LEAST = 40,
|
||||
TASK_PRIORITY_MIN_PLUS = 25,
|
||||
TASK_PRIORITY_MIN = 10,
|
||||
};
|
||||
|
||||
// #define MESSAGE_ID(x) x,
|
||||
// #define MESSAGE_DEF(x) x
|
||||
|
||||
/* This enum defines messages ids. Each one is unique. */
|
||||
typedef enum {
|
||||
|
||||
#define MESSAGE_DEF(iD, pRIO, sTRUCT) iD,
|
||||
|
||||
#include "gtpv1_u_messages_def.h"
|
||||
#include "sctp_messages_def.h"
|
||||
#include "s1ap_messages_def.h"
|
||||
#include "s6a_messages_def.h"
|
||||
#include "sgw_lite_def.h"
|
||||
#include "timer_messages_def.h"
|
||||
#include "udp_messages_def.h"
|
||||
|
||||
#undef MESSAGE_DEF
|
||||
|
||||
MESSAGES_ID_MAX,
|
||||
MESSAGES_ID_END = MESSAGES_ID_MAX,
|
||||
} MessagesIds;
|
||||
|
||||
struct message_priority_s {
|
||||
uint32_t id;
|
||||
uint32_t priority;
|
||||
};
|
||||
|
||||
//! Tasks id of each task
|
||||
typedef enum {
|
||||
TASK_FIRST = 0,
|
||||
/// GTPV1-U task
|
||||
TASK_GTPV1_U = TASK_FIRST,
|
||||
/// S1AP task
|
||||
TASK_S1AP,
|
||||
/// S6a task
|
||||
TASK_S6A,
|
||||
/// SCTP task
|
||||
TASK_SCTP,
|
||||
/// Serving Gateway Lite task
|
||||
TASK_SGW_LITE,
|
||||
/// TIMERS task
|
||||
TASK_TIMER,
|
||||
/// UDP task
|
||||
TASK_UDP,
|
||||
TASK_MAX,
|
||||
TASK_END = TASK_MAX,
|
||||
} TaskId;
|
||||
|
||||
#if defined(INTERTASK_C)
|
||||
/* Map every task id to printable string.
|
||||
*/
|
||||
const char *tasks_string[] = {
|
||||
"gtpv1-u",
|
||||
"s1ap",
|
||||
"s6a",
|
||||
"sctp",
|
||||
"sgw-lite",
|
||||
"timer",
|
||||
"udp",
|
||||
};
|
||||
#endif
|
||||
|
||||
/** @struct MessageDef
|
||||
* @brief Message structure for inter thread communication.
|
||||
*/
|
||||
typedef struct MessageDef_s {
|
||||
uint32_t messageId; /**< Unique message id as referenced in enum MessagesIds */
|
||||
|
||||
uint32_t originTaskId; /**< ID of the sender task */
|
||||
uint32_t destinationTaskId; /**< ID of the destination task */
|
||||
|
||||
union {
|
||||
#define MESSAGE_DEF(iD, pRIO, sTRUCT) sTRUCT;
|
||||
|
||||
#include "gtpv1_u_messages_def.h"
|
||||
#include "sctp_messages_def.h"
|
||||
#include "s1ap_messages_def.h"
|
||||
#include "s6a_messages_def.h"
|
||||
#include "sgw_lite_def.h"
|
||||
#include "timer_messages_def.h"
|
||||
#include "udp_messages_def.h"
|
||||
|
||||
#undef MESSAGE_DEF
|
||||
} msg; /**< Union of payloads as defined in x_messages_def.h headers */
|
||||
} MessageDef;
|
||||
|
||||
/** \brief Send a broadcast message to every task
|
||||
\param message Pointer to the message to send
|
||||
@returns < 0 on failure, 0 otherwise
|
||||
**/
|
||||
int send_broadcast_message(MessageDef *message_p);
|
||||
|
||||
/** \brief Send a message to a task (could be itself)
|
||||
\param task_id Task ID
|
||||
\param message Pointer to the message to send
|
||||
@returns -1 on failure, 0 otherwise
|
||||
**/
|
||||
int send_msg_to_task(TaskId task_id, MessageDef *message);
|
||||
|
||||
/** \brief Retrieves a messsage in queue.
|
||||
* If the queue is empty, the thread is blocked till a new message arrives.
|
||||
\param task_id Task ID of the receiving task
|
||||
\param received_msg Pointer to the allocated message
|
||||
**/
|
||||
void receive_msg(TaskId task_id, MessageDef **received_msg);
|
||||
|
||||
/** \brief Init function for the intertask interface. Init queues, Mutexes and Cond vars.
|
||||
* If the queue is empty, the thread is blocked till a new message arrives.
|
||||
**/
|
||||
void intertask_interface_init(const mme_config_t *mme_config);
|
||||
|
||||
/** \brief Alloc and memset(0) a new itti message.
|
||||
\param origin_task_id Task ID of the sending task
|
||||
\param destination_task_id Task ID of the target task
|
||||
\param message_id Message ID
|
||||
@returns NULL in case of failure or newly allocated mesage ref
|
||||
**/
|
||||
inline MessageDef *alloc_new_message(
|
||||
TaskId origin_task_id,
|
||||
TaskId destination_task_id,
|
||||
MessagesIds message_id);
|
||||
|
||||
#endif /* INTERTASK_INTERFACE_H_ */
|
||||
/* @} */
|
||||
@@ -1,86 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <sys/socket.h> /* socket definitions */
|
||||
#include <sys/types.h> /* socket types */
|
||||
#include <arpa/inet.h> /* inet (3) funtions */
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "intertask_interface_dump.h"
|
||||
|
||||
#include "queue.h"
|
||||
|
||||
struct itti_queue_s {
|
||||
struct itti_queue_s *next;
|
||||
char *data;
|
||||
uint32_t length;
|
||||
};
|
||||
|
||||
struct itti_queue_ref {
|
||||
pthread_mutex_t queue_mutex;
|
||||
struct itti_queue_s *itti_queue_head;
|
||||
struct itti_queue_s *itti_queue_tail;
|
||||
uint32_t queue_size;
|
||||
};
|
||||
|
||||
struct itti_queue_ref itti_queue = { PTHREAD_MUTEX_INITIALIZER, NULL, NULL, 0 };
|
||||
int itti_accept_socket = -1;
|
||||
pthread_t itti_thread;
|
||||
|
||||
int itti_queue_message(MessageDef *message_p) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void * itti_create_socket(void *arg_p) {
|
||||
int itti_conn_socket;
|
||||
struct sockaddr_in servaddr; /* socket address structure */
|
||||
|
||||
if ((itti_conn_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
perror("Socket");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(&servaddr, 0, sizeof(servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
servaddr.sin_port = htons(ITTI_PORT);
|
||||
|
||||
if (bind(itti_conn_socket, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) {
|
||||
perror("bind");
|
||||
return NULL;
|
||||
}
|
||||
if (listen(itti_conn_socket, 5) < 0 ) {
|
||||
perror("listen");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Wait for a connection */
|
||||
if ((itti_accept_socket = accept(itti_conn_socket, NULL, NULL)) < 0) {
|
||||
perror("accept");
|
||||
return NULL;
|
||||
}
|
||||
while(1) {
|
||||
pthread_mutex_lock(&itti_queue.queue_mutex);
|
||||
if (itti_queue.queue_size > 0) {
|
||||
/* There is some messages to send */
|
||||
assert(itti_queue.itti_queue_tail != NULL);
|
||||
|
||||
}
|
||||
pthread_mutex_unlock(&itti_queue.queue_mutex);
|
||||
sleep(1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void itti_init(void) {
|
||||
|
||||
if (pthread_create(&itti_thread, NULL, &itti_create_socket, NULL) < 0) {
|
||||
perror("pthread_create");
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
#ifndef INTERTASK_INTERFACE_DUMP_H_
|
||||
#define INTERTASK_INTERFACE_DUMP_H_
|
||||
|
||||
int itti_queue_message(MessageDef *message);
|
||||
|
||||
void itti_init(void);
|
||||
|
||||
#endif /* INTERTASK_INTERFACE_DUMP_H_ */
|
||||
@@ -1,5 +0,0 @@
|
||||
//WARNING: Do not include this header directly. Use intertask_interface.h instead.
|
||||
|
||||
MESSAGE_DEF(S1AP_SCTP_NEW_MESSAGE_IND, TASK_PRIORITY_MED, S1apSctpNewMessageInd s1apSctpNewMessageInd)
|
||||
MESSAGE_DEF(S1AP_SCTP_ASSOCIATION_CLOSED, TASK_PRIORITY_MAX, S1apSctpAsscociationClosed s1apSctpAssociationClosed)
|
||||
MESSAGE_DEF(S1AP_NAS_NEW_MESSAGE_IND, TASK_PRIORITY_MED, S1apNASNewMessageInd s1apNASNewMessageInd)
|
||||
@@ -1,23 +0,0 @@
|
||||
#ifndef S1AP_MESSAGES_TYPES_H_
|
||||
#define S1AP_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer; ///< SCTP buffer
|
||||
uint32_t bufLen; ///< SCTP buffer length
|
||||
int32_t assocId; ///< SCTP physical association ID
|
||||
uint8_t stream; ///< Stream number on which data had been received
|
||||
uint16_t instreams; ///< Number of input streams for the SCTP connection between peers
|
||||
uint16_t outstreams; ///< Number of output streams for the SCTP connection between peers
|
||||
} S1apSctpNewMessageInd;
|
||||
|
||||
typedef struct {
|
||||
uint32_t assocId; ///< SCTP Association ID of the closed connection
|
||||
} S1apSctpAsscociationClosed;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *nas_buffer; ///< NAS buffer
|
||||
uint32_t nas_length; ///< NAS buffer length
|
||||
uint32_t mme_ue_s1ap_id; ///< Unique MME UE s1ap id
|
||||
} S1apNASNewMessageInd;
|
||||
|
||||
#endif /* S1AP_MESSAGES_TYPES_H_ */
|
||||
@@ -1 +0,0 @@
|
||||
//WARNING: Do not include this header directly. Use intertask_interface.h instead.
|
||||
@@ -1,4 +0,0 @@
|
||||
#ifndef S6A_MESSAGES_TYPES_H_
|
||||
#define S6A_MESSAGES_TYPES_H_
|
||||
|
||||
#endif /* S6A_MESSAGES_TYPES_H_ */
|
||||
@@ -1,5 +0,0 @@
|
||||
//WARNING: Do not include this header directly. Use intertask_interface.h instead.
|
||||
|
||||
MESSAGE_DEF(SCTP_S1AP_INIT, TASK_PRIORITY_MED, SctpS1APInit sctpS1APInit)
|
||||
MESSAGE_DEF(SCTP_NEW_DATA_REQ, TASK_PRIORITY_MED, SctpNewDataReq sctpNewDataReq)
|
||||
MESSAGE_DEF(SCTP_CLOSE_ASSOCIATION, TASK_PRIORITY_MAX, SctpCloseAssociation sctpCloseAssociation)
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifndef SCTP_MESSAGES_TYPES_H_
|
||||
#define SCTP_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer;
|
||||
uint32_t bufLen;
|
||||
uint32_t assocId;
|
||||
uint16_t stream;
|
||||
} SctpNewDataReq;
|
||||
|
||||
typedef struct {
|
||||
uint16_t port;
|
||||
char *address;
|
||||
uint32_t ppid;
|
||||
} SctpS1APInit;
|
||||
|
||||
typedef struct {
|
||||
uint32_t assocId;
|
||||
} SctpCloseAssociation;
|
||||
|
||||
#endif /* SCTP_MESSAGES_TYPES_H_ */
|
||||
@@ -1,5 +0,0 @@
|
||||
MESSAGE_DEF(SGW_CREATE_SESSION_REQUEST, TASK_PRIORITY_MED, SgwCreateSessionRequest sgwCreateSessionRequest)
|
||||
MESSAGE_DEF(SGW_CREATE_SESSION_RESPONSE, TASK_PRIORITY_MED, SgwCreateSessionResponse sgwCreateSessionResponse)
|
||||
MESSAGE_DEF(SGW_MODIFY_BEARER_REQUEST, TASK_PRIORITY_MED, SgwModifyBearerRequest sgwModifyBearerRequest)
|
||||
MESSAGE_DEF(SGW_MODIFY_BEARER_RESPONSE, TASK_PRIORITY_MED, SgwModifyBearerResponse sgwModifyBearerResponse)
|
||||
MESSAGE_DEF(SGW_S1U_ENDPOINT_CREATED, TASK_PRIORITY_MED, SgwS1UEndpointCreated sgwS1UEndpointCreated)
|
||||
@@ -1,76 +0,0 @@
|
||||
#include "../SGW-LITE/sgw_lite_ie_defs.h"
|
||||
|
||||
#ifndef SGW_LITE_MESSAGES_TYPES_H_
|
||||
#define SGW_LITE_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
Teid_t teid; ///< Tunnel Endpoint Identifier
|
||||
Imsi_t imsi;
|
||||
Msisdn_t msisdn;
|
||||
Mei_t mei;
|
||||
Uli_t uli;
|
||||
ServingNetwork_t serving_network;
|
||||
RatType_t rat_type;
|
||||
FTeid_t sender_fteid_for_cp; ///< Sender F-TEID for control plane
|
||||
FTeid_t pgw_address_for_cp; ///< PGW S5/S8 address for control plane or PMIP
|
||||
APN_t apn; ///< Access Point Name
|
||||
SelectionMode_t selection_mode; ///< Selection Mode
|
||||
PDNType_t pdn_type; ///< PDN Type
|
||||
PAA_t paa; ///< PDN Address Allocation
|
||||
/* Shall include APN Restriction but not used in our case */
|
||||
AMBR_t ambr; ///< Aggregate Maximum Bit Rate
|
||||
/* TODO: add Protocol Configuration otions */
|
||||
FQ_CSID_t mme_fq_csid;
|
||||
UETimeZone_t ue_time_zone;
|
||||
UCI_t uci; ///< User CSG Information
|
||||
struct {
|
||||
unsigned eps_bearer_id:4; ///< EPS Bearer ID
|
||||
BearerQOS_t bearer_level_qos;
|
||||
} bearer_to_create; ///< Bearer Contexts to be created
|
||||
} SgwCreateSessionRequest;
|
||||
|
||||
typedef struct {
|
||||
Teid_t teid; ///< Tunnel Endpoint Identifier
|
||||
PAA_t paa; ///< PDN Address Allocation
|
||||
APNRestriction_t apn_restriction;
|
||||
struct {
|
||||
unsigned eps_bearer_id:4; ///< EPS Bearer ID
|
||||
SGWCause_t cause;
|
||||
FTeid_t s1u_sgw_fteid; ///< Sender F-TEID for control plane
|
||||
} bearer_context_created;
|
||||
FQ_CSID_t pgw_fq_csid;
|
||||
FQ_CSID_t sgw_fq_csid;
|
||||
} SgwCreateSessionResponse;
|
||||
|
||||
typedef struct {
|
||||
Teid_t teid; ///< Tunnel Endpoint Identifier
|
||||
/* Delay Value in integer multiples of 50 millisecs, or zero */
|
||||
DelayValue_t delay_dl_packet_notif_req;
|
||||
struct {
|
||||
unsigned eps_bearer_id:4; ///< EPS Bearer ID
|
||||
FTeid_t s1_eNB_fteid; ///< S1 eNodeB F-TEID
|
||||
} bearer_context_to_modify;
|
||||
FQ_CSID_t mme_fq_csid;
|
||||
} SgwModifyBearerRequest;
|
||||
|
||||
typedef struct {
|
||||
Teid_t teid; ///< Tunnel Endpoint Identifier
|
||||
|
||||
} SgwModifyBearerResponse;
|
||||
|
||||
typedef struct {
|
||||
uint8_t status; ///< Status of S1U endpoint creation (Failed = 0xFF or Success = 0x0)
|
||||
uint32_t teid;
|
||||
} SgwS1UEndpointCreated;
|
||||
|
||||
typedef struct {
|
||||
Teid_t teid; ///< Tunnel Endpoint Identifier
|
||||
EBI_t lbi; ///< Linked EPS Bearer ID
|
||||
FTeid_t sender_fteid_for_cp; ///< Sender F-TEID for control plane
|
||||
} SgwDeleteSessionRequest;
|
||||
|
||||
typedef struct {
|
||||
|
||||
} SgwDeleteBearerRequest;
|
||||
|
||||
#endif
|
||||
@@ -1,3 +0,0 @@
|
||||
MESSAGE_DEF(TIMER_NEW_REQUEST, TASK_PRIORITY_MIN_PLUS, TimerNewRequest timerNewRequest)
|
||||
MESSAGE_DEF(TIMER_REMOVE, TASK_PRIORITY_MIN_PLUS, TimerRemove timerRemove)
|
||||
MESSAGE_DEF(TIMER_HAS_EXPIRED, TASK_PRIORITY_MED_PLUS, TimerHasExpired timerHasExpired)
|
||||
@@ -1,18 +0,0 @@
|
||||
#ifndef TIMER_MESSAGES_TYPES_H_
|
||||
#define TIMER_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
uint32_t expiry_sec;
|
||||
uint32_t expiry_usec;
|
||||
uint32_t timer_id;
|
||||
} TimerNewRequest;
|
||||
|
||||
typedef struct {
|
||||
long timer_id;
|
||||
}TimerHasExpired;
|
||||
|
||||
typedef struct {
|
||||
uint32_t timer_id;
|
||||
} TimerRemove;
|
||||
|
||||
#endif /* TIMER_MESSAGES_TYPES_H_ */
|
||||
@@ -1,2 +0,0 @@
|
||||
MESSAGE_DEF(UDP_INIT, TASK_PRIORITY_MED, UdpInit udpInit)
|
||||
MESSAGE_DEF(UDP_DATA_REQ, TASK_PRIORITY_MED, UdpDataReq udpDataReq)
|
||||
@@ -1,16 +0,0 @@
|
||||
#ifndef UDP_MESSAGES_TYPES_H_
|
||||
#define UDP_MESSAGES_TYPES_H_
|
||||
|
||||
typedef struct {
|
||||
uint32_t port;
|
||||
char *address;
|
||||
} UdpInit;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer;
|
||||
uint32_t buffer_length;
|
||||
uint32_t peer_address;
|
||||
uint32_t peer_port;
|
||||
} UdpDataReq;
|
||||
|
||||
#endif /* UDP_MESSAGES_TYPES_H_ */
|
||||
@@ -1,12 +0,0 @@
|
||||
SUBDIRS = \
|
||||
GTPV1-U \
|
||||
INTERTASK_INTERFACE \
|
||||
SCTP \
|
||||
S1AP \
|
||||
S6A \
|
||||
SGW-LITE \
|
||||
UTILS \
|
||||
UDP \
|
||||
TEST \
|
||||
OAISIM_MME \
|
||||
DOCS
|
||||
@@ -1,823 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
compile config.guess config.sub depcomp install-sh ltmain.sh \
|
||||
missing
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
cscope distdir dist dist-all distcheck
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = \
|
||||
GTPV1-U \
|
||||
INTERTASK_INTERFACE \
|
||||
SCTP \
|
||||
S1AP \
|
||||
S6A \
|
||||
SGW-LITE \
|
||||
UTILS \
|
||||
UDP \
|
||||
TEST \
|
||||
OAISIM_MME \
|
||||
DOCS
|
||||
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then rm -f stamp-h1; else :; fi
|
||||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
cscopelist-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
|
||||
cscope.files: clean-cscope cscopelist-recursive cscopelist
|
||||
|
||||
cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
|
||||
cscopelist-recursive ctags-recursive install-am install-strip \
|
||||
tags-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am am--refresh check check-am clean clean-cscope \
|
||||
clean-generic clean-libtool cscope cscopelist \
|
||||
cscopelist-recursive ctags ctags-recursive dist dist-all \
|
||||
dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
|
||||
dist-zip distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-recursive uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ \
|
||||
-I$(top_srcdir)/GTPV1-U \
|
||||
-I$(top_srcdir)/SCTP \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_builddir)/S1AP/MESSAGES \
|
||||
-I$(top_srcdir)/S1AP \
|
||||
-I$(top_srcdir)/S6A \
|
||||
-I$(top_srcdir)/SGW-LITE \
|
||||
-I$(top_srcdir)/UDP \
|
||||
-I$(top_srcdir)/UTILS \
|
||||
-I$(top_srcdir)/UTILS/TIMER
|
||||
|
||||
oaisim_mme_LDADD = \
|
||||
$(top_builddir)/GTPV1-U/libgtpv1u.la \
|
||||
$(top_builddir)/INTERTASK_INTERFACE/libitti.la \
|
||||
$(top_builddir)/S1AP/libs1ap.la \
|
||||
$(top_builddir)/S6A/libs6a.la \
|
||||
$(top_builddir)/SGW-LITE/libsgw_lite.la \
|
||||
$(top_builddir)/SCTP/libsctpserver.la \
|
||||
$(top_builddir)/UTILS/TIMER/libtimer.la \
|
||||
$(top_builddir)/UTILS/libutils.la \
|
||||
$(top_builddir)/UDP/libudpserver.la
|
||||
|
||||
bin_PROGRAMS = oaisim_mme
|
||||
@@ -1,607 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
@ENABLE_USE_HSS_TRUE@am__append_1 = -I$(top_srcdir)/S6A
|
||||
@ENABLE_USE_HSS_TRUE@am__append_2 = $(top_builddir)/S6A/libs6a.la
|
||||
bin_PROGRAMS = oaisim_mme$(EXEEXT)
|
||||
subdir = OAISIM_MME
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depcomp
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
oaisim_mme_SOURCES = oaisim_mme.c
|
||||
oaisim_mme_OBJECTS = oaisim_mme.$(OBJEXT)
|
||||
oaisim_mme_DEPENDENCIES = $(top_builddir)/GTPV1-U/libgtpv1u.la \
|
||||
$(top_builddir)/INTERTASK_INTERFACE/libitti.la \
|
||||
$(top_builddir)/S1AP/libs1ap.la \
|
||||
$(top_builddir)/SGW-LITE/libsgw_lite.la \
|
||||
$(top_builddir)/SCTP/libsctpserver.la \
|
||||
$(top_builddir)/UTILS/TIMER/libtimer.la \
|
||||
$(top_builddir)/UTILS/libutils.la \
|
||||
$(top_builddir)/UDP/libudpserver.la $(am__append_2)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = oaisim_mme.c
|
||||
DIST_SOURCES = oaisim_mme.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @ADD_CFLAGS@ -I$(top_srcdir)/GTPV1-U -I$(top_srcdir)/SCTP \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_builddir)/S1AP/MESSAGES -I$(top_srcdir)/S1AP \
|
||||
-I$(top_srcdir)/SGW-LITE -I$(top_srcdir)/UDP \
|
||||
-I$(top_srcdir)/UTILS -I$(top_srcdir)/UTILS/TIMER \
|
||||
$(am__append_1)
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
oaisim_mme_LDADD = $(top_builddir)/GTPV1-U/libgtpv1u.la \
|
||||
$(top_builddir)/INTERTASK_INTERFACE/libitti.la \
|
||||
$(top_builddir)/S1AP/libs1ap.la \
|
||||
$(top_builddir)/SGW-LITE/libsgw_lite.la \
|
||||
$(top_builddir)/SCTP/libsctpserver.la \
|
||||
$(top_builddir)/UTILS/TIMER/libtimer.la \
|
||||
$(top_builddir)/UTILS/libutils.la \
|
||||
$(top_builddir)/UDP/libudpserver.la $(am__append_2)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu OAISIM_MME/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu OAISIM_MME/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||
if ($$2 == $$4) files[d] = files[d] " " $$1; \
|
||||
else { print "f", $$3 "/" $$4, $$1; } } \
|
||||
END { for (d in files) print "f", d, files[d] }' | \
|
||||
while read type dir files; do \
|
||||
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
||||
} \
|
||||
; done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list || exit $$?; \
|
||||
test -n "$(EXEEXT)" || exit 0; \
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
oaisim_mme$(EXEEXT): $(oaisim_mme_OBJECTS) $(oaisim_mme_DEPENDENCIES) $(EXTRA_oaisim_mme_DEPENDENCIES)
|
||||
@rm -f oaisim_mme$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(oaisim_mme_OBJECTS) $(oaisim_mme_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oaisim_mme.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool cscopelist ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binPROGRAMS install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,82 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "mme_config.h"
|
||||
#include "gtpv1_u.h"
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "sctp_primitives_server.h"
|
||||
#include "udp_primitives_server.h"
|
||||
#include "s1ap_mme.h"
|
||||
#include "log.h"
|
||||
#include "timer.h"
|
||||
#include "sgw_lite_defs.h"
|
||||
|
||||
#if defined(ENABLE_USE_HSS)
|
||||
# include <freeDiameter/freeDiameter-host.h>
|
||||
# include <freeDiameter/libfdcore.h>
|
||||
# include "s6a_defs.h"
|
||||
#endif
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
mme_config_t mme_config;
|
||||
|
||||
config_parse_opt_line(argc, argv, &mme_config);
|
||||
fprintf(stdout, "Starting %s\n", PACKAGE_STRING);
|
||||
|
||||
/* Calling each layer init function */
|
||||
log_init(&mme_config);
|
||||
intertask_interface_init(&mme_config);
|
||||
sctp_init(&mme_config);
|
||||
udp_init(&mme_config);
|
||||
s1ap_mme_init(&mme_config);
|
||||
gtpv1_u_init(&mme_config);
|
||||
timer_init(&mme_config);
|
||||
#if defined(ENABLE_USE_HSS)
|
||||
s6a_init(&mme_config);
|
||||
#endif
|
||||
sgw_lite_init(&mme_config);
|
||||
|
||||
while(1) {
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
===============================================================================
|
||||
***************************** OAISIM_MME v0.1 *********************************
|
||||
===============================================================================
|
||||
|
||||
MME + P-GW + S-GW implementation of 3GPP standard.
|
||||
|
||||
|-----| |------|
|
||||
| MME | ----- | eNBs |
|
||||
|-----| |------|
|
||||
|
||||
Controle plane:
|
||||
|
||||
eNB MME
|
||||
|
||||
|----------------------------|
|
||||
| MME Application layer |
|
||||
|----------------------------|
|
||||
|------------|
|
||||
| NAS |
|
||||
|------------|
|
||||
|------------| |------------| |------------| |------------|
|
||||
| RRC | - | S1AP layer | ------ | S1AP layer | | Diameter |
|
||||
|------------| |------------| |------------| |------------|
|
||||
|------------| |----------------------------|
|
||||
| SCTP layer | ------ | SCTP layer |
|
||||
|------------| |----------------------------|
|
||||
|
||||
Non-UE associated control plane goes directly from S1AP to MME application layer.
|
||||
|
||||
User plane:
|
||||
|
||||
eNB MME
|
||||
|
||||
|------------| |------------|
|
||||
| PDCP | | MAL |
|
||||
|------------| |------------|
|
||||
|------------| |------------|
|
||||
| S1-U | ------ | S1-U |
|
||||
|------------| |------------|
|
||||
|------------| |------------|
|
||||
| GTPV1-U | ------ | GTPV1-U |
|
||||
|------------| |------------|
|
||||
|------------| |------------|
|
||||
| UDP layer | ------ | UDP layer |
|
||||
|------------| |------------|
|
||||
|
||||
Current development:
|
||||
|
||||
- NAS layer: under development
|
||||
- S1AP layer: compliant with 3GPP TS36.413-8a0 and TS36.413-980 (under development)
|
||||
- SCTP layer: SEQ_PACKET socket types
|
||||
|
||||
For now the MME is able to register new eNBs on SCTP layer,
|
||||
and handles S1 Setup request, Initial UE message, UplinkNASTransport on
|
||||
S1AP layer.
|
||||
|
||||
The MME needs some libraries and tools:
|
||||
- libsctp-dev (SCTP support)
|
||||
- libpthread-dev
|
||||
- asn1c utility (patched with Aligned PER support, see README in
|
||||
S1AP/MESSAGES/ASN1) link: http://lionet.info/soft/asn1c-0.9.21.tar.gz
|
||||
- freediameter 1.1.5 patched (apply patch in DIAMETER/) with gnutls 3.1.0
|
||||
link: http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz
|
||||
|
||||
Compilations steps for use with oaisim 4G emulation environment:
|
||||
./autogen.sh
|
||||
mkdir objs && cd objs
|
||||
../configure [options]
|
||||
make
|
||||
|
||||
Compilations steps for oaisim_mme use alone:
|
||||
./autogen.sh
|
||||
./configure [options]
|
||||
make
|
||||
|
||||
Current options supported for configure:
|
||||
--disable-r9: disable R9 S1AP messages (R9 enabled by default)
|
||||
code build switch: UPDATE_RELEASE_9
|
||||
|
||||
To rum mme:
|
||||
./OAISIM_MME/oaisim_mme [options]
|
||||
Avalaible options:
|
||||
-h: print help
|
||||
-v: enable verbosity level [1-2]
|
||||
-V: print current executable version and return
|
||||
|
||||
Before any commit:
|
||||
make maintainer-clean
|
||||
|
||||
Bugs:
|
||||
report any bug to openair_admin@eurecom.fr
|
||||
|
||||
MME SCTP port for S1AP messages is 36412
|
||||
|
||||
-------- Adding new files to build system --------
|
||||
1) When adding a new file to compile, edit the Makefile.am of the corresponding
|
||||
directory.
|
||||
2) Execute ./autogen.sh
|
||||
3) make
|
||||
WARNING: do not edit directly Makefile and Makefile.in, they are re-generated by
|
||||
autoconf/automake.
|
||||
@@ -1,8 +0,0 @@
|
||||
BUILT_SOURCES=ieregen.stamp
|
||||
|
||||
ieregen.stamp: $(top_srcdir)/S1AP/MESSAGES/ASN1/$(ASN1DIR)/S1AP-PDU-Contents.asn $(top_srcdir)/S1AP/MESSAGES/ASN1/asn1tostruct.py $(top_srcdir)/configure
|
||||
echo Timestamp > $@
|
||||
python $(top_srcdir)/S1AP/MESSAGES/ASN1/asn1tostruct.py -f$(top_srcdir)/S1AP/MESSAGES/ASN1/$(ASN1DIR)/S1AP-PDU-Contents.asn -o$(top_builddir)/S1AP
|
||||
|
||||
clean-local:
|
||||
rm -f ieregen.stamp
|
||||
@@ -1,418 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = S1AP/MESSAGES/ASN1
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
BUILT_SOURCES = ieregen.stamp
|
||||
all: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu S1AP/MESSAGES/ASN1/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu S1AP/MESSAGES/ASN1/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
clean-local distclean distclean-generic distclean-libtool \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
uninstall uninstall-am
|
||||
|
||||
|
||||
ieregen.stamp: $(top_srcdir)/S1AP/MESSAGES/ASN1/$(ASN1DIR)/S1AP-PDU-Contents.asn $(top_srcdir)/S1AP/MESSAGES/ASN1/asn1tostruct.py $(top_srcdir)/configure
|
||||
echo Timestamp > $@
|
||||
python $(top_srcdir)/S1AP/MESSAGES/ASN1/asn1tostruct.py -f$(top_srcdir)/S1AP/MESSAGES/ASN1/$(ASN1DIR)/S1AP-PDU-Contents.asn -o$(top_builddir)/S1AP
|
||||
|
||||
clean-local:
|
||||
rm -f ieregen.stamp
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,201 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Common definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-CommonDataTypes {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
Criticality ::= ENUMERATED { reject, ignore, notify }
|
||||
|
||||
Presence ::= ENUMERATED { optional, conditional, mandatory }
|
||||
|
||||
PrivateIE-ID ::= CHOICE {
|
||||
local INTEGER (0..65535),
|
||||
global OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
--ProcedureCode ::= INTEGER (0..255)
|
||||
ProcedureCode ::= INTEGER {
|
||||
id-HandoverPreparation(0),
|
||||
id-HandoverResourceAllocation(1),
|
||||
id-HandoverNotification(2),
|
||||
id-PathSwitchRequest(3),
|
||||
id-HandoverCancel(4),
|
||||
id-E-RABSetup(5),
|
||||
id-E-RABModify(6),
|
||||
id-E-RABRelease(7),
|
||||
id-E-RABReleaseIndication(8),
|
||||
id-InitialContextSetup(9),
|
||||
id-Paging(10),
|
||||
id-downlinkNASTransport(11),
|
||||
id-initialUEMessage(12),
|
||||
id-uplinkNASTransport(13),
|
||||
id-Reset(14),
|
||||
id-ErrorIndication(15),
|
||||
id-NASNonDeliveryIndication(16),
|
||||
id-S1Setup(17),
|
||||
id-UEContextReleaseRequest(18),
|
||||
id-DownlinkS1cdma2000tunneling(19),
|
||||
id-UplinkS1cdma2000tunneling(20),
|
||||
id-UEContextModification(21),
|
||||
id-UECapabilityInfoIndication(22),
|
||||
id-UEContextRelease(23),
|
||||
id-eNBStatusTransfer(24),
|
||||
id-MMEStatusTransfer(25),
|
||||
id-DeactivateTrace(26),
|
||||
id-TraceStart(27),
|
||||
id-TraceFailureIndication(28),
|
||||
id-ENBConfigurationUpdate(29),
|
||||
id-MMEConfigurationUpdate(30),
|
||||
id-LocationReportingControl(31),
|
||||
id-LocationReportingFailureIndication(32),
|
||||
id-LocationReport(33),
|
||||
id-OverloadStart(34),
|
||||
id-OverloadStop(35),
|
||||
id-WriteReplaceWarning(36),
|
||||
id-eNBDirectInformationTransfer(37),
|
||||
id-MMEDirectInformationTransfer(38),
|
||||
id-PrivateMessage(39),
|
||||
id-eNBConfigurationTransfer(40),
|
||||
id-MMEConfigurationTransfer(41),
|
||||
id-CellTrafficTrace(42)
|
||||
} (0..255)
|
||||
|
||||
ProtocolExtensionID ::= INTEGER (0..65535)
|
||||
|
||||
ProtocolIE-ID ::= INTEGER {
|
||||
id-MME-UE-S1AP-ID(0),
|
||||
id-HandoverType(1),
|
||||
id-Cause(2),
|
||||
id-SourceID(3),
|
||||
id-TargetID (4),
|
||||
id-eNB-UE-S1AP-ID(8),
|
||||
id-E-RABSubjecttoDataForwardingList(12),
|
||||
id-E-RABtoReleaseListHOCmd(13),
|
||||
id-E-RABDataForwardingItem(14),
|
||||
id-E-RABReleaseItemBearerRelComp(15),
|
||||
id-E-RABToBeSetupListBearerSUReq(16),
|
||||
id-E-RABToBeSetupItemBearerSUReq(17),
|
||||
id-E-RABAdmittedList(18),
|
||||
id-E-RABFailedToSetupListHOReqAck(19),
|
||||
id-E-RABAdmittedItem(20),
|
||||
id-E-RABFailedtoSetupItemHOReqAck(21),
|
||||
id-E-RABToBeSwitchedDLList(22),
|
||||
id-E-RABToBeSwitchedDLItem(23),
|
||||
id-E-RABToBeSetupListCtxtSUReq(24),
|
||||
id-TraceActivation(25),
|
||||
id-NAS-PDU(26),
|
||||
id-E-RABToBeSetupItemHOReq(27),
|
||||
id-E-RABSetupListBearerSURes(28),
|
||||
id-E-RABFailedToSetupListBearerSURes(29),
|
||||
id-E-RABToBeModifiedListBearerModReq(30),
|
||||
id-E-RABModifyListBearerModRes(31),
|
||||
id-E-RABFailedToModifyList(32),
|
||||
id-E-RABToBeReleasedList(33),
|
||||
id-E-RABFailedToReleaseList(34),
|
||||
id-E-RABItem(35),
|
||||
id-E-RABToBeModifiedItemBearerModReq(36),
|
||||
id-E-RABModifyItemBearerModRes(37),
|
||||
id-E-RABReleaseItem(38),
|
||||
id-E-RABSetupItemBearerSURes(39),
|
||||
id-SecurityContext(40),
|
||||
id-HandoverRestrictionList(41),
|
||||
id-UEPagingID(43),
|
||||
id-pagingDRX(44),
|
||||
id-TAIList(46),
|
||||
id-TAIItem(47),
|
||||
id-E-RABFailedToSetupListCtxtSURes(48),
|
||||
id-E-RABReleaseItemHOCmd(49),
|
||||
id-E-RABSetupItemCtxtSURes(50),
|
||||
id-E-RABSetupListCtxtSURes(51),
|
||||
id-E-RABToBeSetupItemCtxtSUReq(52),
|
||||
id-E-RABToBeSetupListHOReq(53),
|
||||
id-GERANtoLTEHOInformationRes(55),
|
||||
id-UTRANtoLTEHOInformationRes(57),
|
||||
id-CriticalityDiagnostics(58),
|
||||
id-Global-ENB-ID(59),
|
||||
id-eNBname(60),
|
||||
id-MMEname(61),
|
||||
id-ServedPLMNs(63),
|
||||
id-SupportedTAs(64),
|
||||
id-TimeToWait(65),
|
||||
id-uEaggregateMaximumBitrate(66),
|
||||
id-TAI(67),
|
||||
id-E-RABReleaseListBearerRelComp(69),
|
||||
id-cdma2000PDU(70),
|
||||
id-cdma2000RATType(71),
|
||||
id-cdma2000SectorID(72),
|
||||
id-SecurityKey(73),
|
||||
id-UERadioCapability(74),
|
||||
id-GUMMEI-ID(75),
|
||||
id-E-RABInformationListItem(78),
|
||||
id-Direct-Forwarding-Path-Availability(79),
|
||||
id-UEIdentityIndexValue(80),
|
||||
id-cdma2000HOStatus(83),
|
||||
id-cdma2000HORequiredIndication(84),
|
||||
id-E-UTRAN-Trace-ID(86),
|
||||
id-RelativeMMECapacity(87),
|
||||
id-SourceMME-UE-S1AP-ID(88),
|
||||
id-Bearers-SubjectToStatusTransfer-Item(89),
|
||||
id-eNB-StatusTransfer-TransparentContainer(90),
|
||||
id-UE-associatedLogicalS1-ConnectionItem(91),
|
||||
id-ResetType(92),
|
||||
id-UE-associatedLogicalS1-ConnectionListResAck(93),
|
||||
id-E-RABToBeSwitchedULItem(94),
|
||||
id-E-RABToBeSwitchedULList(95),
|
||||
id-S-TMSI(96),
|
||||
id-cdma2000OneXRAND(97),
|
||||
id-RequestType(98),
|
||||
id-UE-S1AP-IDs(99),
|
||||
id-EUTRAN-CGI(100),
|
||||
id-OverloadResponse(101),
|
||||
id-cdma2000OneXSRVCCInfo(102),
|
||||
id-E-RABFailedToBeReleasedList(103),
|
||||
id-Source-ToTarget-TransparentContainer(104),
|
||||
id-ServedGUMMEIs(105),
|
||||
id-SubscriberProfileIDforRFP(106),
|
||||
id-UESecurityCapabilities(107),
|
||||
id-CSFallbackIndicator(108),
|
||||
id-CNDomain(109),
|
||||
id-E-RABReleasedList(110),
|
||||
id-MessageIdentifier(111),
|
||||
id-SerialNumber(112),
|
||||
id-WarningAreaList(113),
|
||||
id-RepetitionPeriod(114),
|
||||
id-NumberofBroadcastRequest(115),
|
||||
id-WarningType(116),
|
||||
id-WarningSecurityInfo(117),
|
||||
id-DataCodingScheme(118),
|
||||
id-WarningMessageContents(119),
|
||||
id-BroadcastCompletedAreaList(120),
|
||||
id-Inter-SystemInformationTransferTypeEDT(121),
|
||||
id-Inter-SystemInformationTransferTypeMDT(122),
|
||||
id-Target-ToSource-TransparentContainer(123),
|
||||
id-SRVCCOperationPossible(124),
|
||||
id-SRVCCHOIndication(125),
|
||||
id-NAS-DownlinkCount(126),
|
||||
id-CSG-Id(127),
|
||||
id-CSG-IdList(128),
|
||||
id-SONConfigurationTransferECT(129),
|
||||
id-SONConfigurationTransferMCT(130),
|
||||
id-TraceCollectionEntityIPAddress(131),
|
||||
id-MSClassmark2(132),
|
||||
id-MSClassmark3(133),
|
||||
id-RRC-Establishment-Cause(134),
|
||||
id-NASSecurityParametersfromE-UTRAN(135),
|
||||
id-NASSecurityParameterstoE-UTRAN(136),
|
||||
id-DefaultPagingDRX(137),
|
||||
id-Source-ToTarget-TransparentContainer-Secondary(138),
|
||||
id-Target-ToSource-TransparentContainer-Secondary(139)
|
||||
} (0..65535)
|
||||
|
||||
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
|
||||
|
||||
END
|
||||
@@ -1,249 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Constant definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-Constants {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
|
||||
IMPORTS
|
||||
ProcedureCode,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM S1AP-CommonDataTypes;
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-HandoverPreparation ProcedureCode ::= 0
|
||||
id-HandoverResourceAllocation ProcedureCode ::= 1
|
||||
id-HandoverNotification ProcedureCode ::= 2
|
||||
id-PathSwitchRequest ProcedureCode ::= 3
|
||||
id-HandoverCancel ProcedureCode ::= 4
|
||||
id-E-RABSetup ProcedureCode ::= 5
|
||||
id-E-RABModify ProcedureCode ::= 6
|
||||
id-E-RABRelease ProcedureCode ::= 7
|
||||
id-E-RABReleaseIndication ProcedureCode ::= 8
|
||||
id-InitialContextSetup ProcedureCode ::= 9
|
||||
id-Paging ProcedureCode ::= 10
|
||||
id-downlinkNASTransport ProcedureCode ::= 11
|
||||
id-initialUEMessage ProcedureCode ::= 12
|
||||
id-uplinkNASTransport ProcedureCode ::= 13
|
||||
id-Reset ProcedureCode ::= 14
|
||||
id-ErrorIndication ProcedureCode ::= 15
|
||||
id-NASNonDeliveryIndication ProcedureCode ::= 16
|
||||
id-S1Setup ProcedureCode ::= 17
|
||||
id-UEContextReleaseRequest ProcedureCode ::= 18
|
||||
id-DownlinkS1cdma2000tunneling ProcedureCode ::= 19
|
||||
id-UplinkS1cdma2000tunneling ProcedureCode ::= 20
|
||||
id-UEContextModification ProcedureCode ::= 21
|
||||
id-UECapabilityInfoIndication ProcedureCode ::= 22
|
||||
id-UEContextRelease ProcedureCode ::= 23
|
||||
id-eNBStatusTransfer ProcedureCode ::= 24
|
||||
id-MMEStatusTransfer ProcedureCode ::= 25
|
||||
id-DeactivateTrace ProcedureCode ::= 26
|
||||
id-TraceStart ProcedureCode ::= 27
|
||||
id-TraceFailureIndication ProcedureCode ::= 28
|
||||
id-ENBConfigurationUpdate ProcedureCode ::= 29
|
||||
id-MMEConfigurationUpdate ProcedureCode ::= 30
|
||||
id-LocationReportingControl ProcedureCode ::= 31
|
||||
id-LocationReportingFailureIndication ProcedureCode ::= 32
|
||||
id-LocationReport ProcedureCode ::= 33
|
||||
id-OverloadStart ProcedureCode ::= 34
|
||||
id-OverloadStop ProcedureCode ::= 35
|
||||
id-WriteReplaceWarning ProcedureCode ::= 36
|
||||
id-eNBDirectInformationTransfer ProcedureCode ::= 37
|
||||
id-MMEDirectInformationTransfer ProcedureCode ::= 38
|
||||
id-PrivateMessage ProcedureCode ::= 39
|
||||
id-eNBConfigurationTransfer ProcedureCode ::= 40
|
||||
id-MMEConfigurationTransfer ProcedureCode ::= 41
|
||||
id-CellTrafficTrace ProcedureCode ::= 42
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Extension constants
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxPrivateIEs INTEGER ::= 65535
|
||||
maxProtocolExtensions INTEGER ::= 65535
|
||||
maxProtocolIEs INTEGER ::= 65535
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Lists
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxNrOfCSGs INTEGER ::= 256
|
||||
maxNrOfE-RABs INTEGER ::= 256
|
||||
maxnoofTAIs INTEGER ::= 256
|
||||
maxnoofTACs INTEGER ::= 256
|
||||
maxNrOfErrors INTEGER ::= 256
|
||||
maxnoofBPLMNs INTEGER ::= 6
|
||||
maxnoofPLMNsPerMME INTEGER ::= 32
|
||||
maxnoofEPLMNs INTEGER ::= 15
|
||||
maxnoofEPLMNsPlusOne INTEGER ::= 16
|
||||
maxnoofForbLACs INTEGER ::= 4096
|
||||
maxnoofForbTACs INTEGER ::= 4096
|
||||
maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256
|
||||
maxnoofCells INTEGER ::= 16
|
||||
maxnoofTAIforWarning INTEGER ::= 65535
|
||||
maxnoofCellID INTEGER ::= 65535
|
||||
maxnoofEmergencyAreaID INTEGER ::= 65535
|
||||
maxnoofCellinTAI INTEGER ::= 65535
|
||||
maxnoofCellinEAI INTEGER ::= 65535
|
||||
maxnoofeNBX2TLAs INTEGER ::= 2
|
||||
maxnoofRATs INTEGER ::= 8
|
||||
maxnoofGroupIDs INTEGER ::= 65535
|
||||
maxnoofMMECs INTEGER ::= 256
|
||||
|
||||
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-MME-UE-S1AP-ID ProtocolIE-ID ::= 0
|
||||
id-HandoverType ProtocolIE-ID ::= 1
|
||||
id-Cause ProtocolIE-ID ::= 2
|
||||
id-SourceID ProtocolIE-ID ::= 3
|
||||
id-TargetID ProtocolIE-ID ::= 4
|
||||
id-eNB-UE-S1AP-ID ProtocolIE-ID ::= 8
|
||||
id-E-RABSubjecttoDataForwardingList ProtocolIE-ID ::= 12
|
||||
id-E-RABtoReleaseListHOCmd ProtocolIE-ID ::= 13
|
||||
id-E-RABDataForwardingItem ProtocolIE-ID ::= 14
|
||||
id-E-RABReleaseItemBearerRelComp ProtocolIE-ID ::= 15
|
||||
id-E-RABToBeSetupListBearerSUReq ProtocolIE-ID ::= 16
|
||||
id-E-RABToBeSetupItemBearerSUReq ProtocolIE-ID ::= 17
|
||||
id-E-RABAdmittedList ProtocolIE-ID ::= 18
|
||||
id-E-RABFailedToSetupListHOReqAck ProtocolIE-ID ::= 19
|
||||
id-E-RABAdmittedItem ProtocolIE-ID ::= 20
|
||||
id-E-RABFailedtoSetupItemHOReqAck ProtocolIE-ID ::= 21
|
||||
id-E-RABToBeSwitchedDLList ProtocolIE-ID ::= 22
|
||||
id-E-RABToBeSwitchedDLItem ProtocolIE-ID ::= 23
|
||||
id-E-RABToBeSetupListCtxtSUReq ProtocolIE-ID ::= 24
|
||||
id-TraceActivation ProtocolIE-ID ::= 25
|
||||
id-NAS-PDU ProtocolIE-ID ::= 26
|
||||
id-E-RABToBeSetupItemHOReq ProtocolIE-ID ::= 27
|
||||
id-E-RABSetupListBearerSURes ProtocolIE-ID ::= 28
|
||||
id-E-RABFailedToSetupListBearerSURes ProtocolIE-ID ::= 29
|
||||
id-E-RABToBeModifiedListBearerModReq ProtocolIE-ID ::= 30
|
||||
id-E-RABModifyListBearerModRes ProtocolIE-ID ::= 31
|
||||
id-E-RABFailedToModifyList ProtocolIE-ID ::= 32
|
||||
id-E-RABToBeReleasedList ProtocolIE-ID ::= 33
|
||||
id-E-RABFailedToReleaseList ProtocolIE-ID ::= 34
|
||||
id-E-RABItem ProtocolIE-ID ::= 35
|
||||
id-E-RABToBeModifiedItemBearerModReq ProtocolIE-ID ::= 36
|
||||
id-E-RABModifyItemBearerModRes ProtocolIE-ID ::= 37
|
||||
id-E-RABReleaseItem ProtocolIE-ID ::= 38
|
||||
id-E-RABSetupItemBearerSURes ProtocolIE-ID ::= 39
|
||||
id-SecurityContext ProtocolIE-ID ::= 40
|
||||
id-HandoverRestrictionList ProtocolIE-ID ::= 41
|
||||
id-UEPagingID ProtocolIE-ID ::= 43
|
||||
id-pagingDRX ProtocolIE-ID ::= 44
|
||||
id-TAIList ProtocolIE-ID ::= 46
|
||||
id-TAIItem ProtocolIE-ID ::= 47
|
||||
id-E-RABFailedToSetupListCtxtSURes ProtocolIE-ID ::= 48
|
||||
id-E-RABReleaseItemHOCmd ProtocolIE-ID ::= 49
|
||||
id-E-RABSetupItemCtxtSURes ProtocolIE-ID ::= 50
|
||||
id-E-RABSetupListCtxtSURes ProtocolIE-ID ::= 51
|
||||
id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-ID ::= 52
|
||||
id-E-RABToBeSetupListHOReq ProtocolIE-ID ::= 53
|
||||
id-GERANtoLTEHOInformationRes ProtocolIE-ID ::= 55
|
||||
id-UTRANtoLTEHOInformationRes ProtocolIE-ID ::= 57
|
||||
id-CriticalityDiagnostics ProtocolIE-ID ::= 58
|
||||
id-Global-ENB-ID ProtocolIE-ID ::= 59
|
||||
id-eNBname ProtocolIE-ID ::= 60
|
||||
id-MMEname ProtocolIE-ID ::= 61
|
||||
id-ServedPLMNs ProtocolIE-ID ::= 63
|
||||
id-SupportedTAs ProtocolIE-ID ::= 64
|
||||
id-TimeToWait ProtocolIE-ID ::= 65
|
||||
id-uEaggregateMaximumBitrate ProtocolIE-ID ::= 66
|
||||
id-TAI ProtocolIE-ID ::= 67
|
||||
id-E-RABReleaseListBearerRelComp ProtocolIE-ID ::= 69
|
||||
id-cdma2000PDU ProtocolIE-ID ::= 70
|
||||
id-cdma2000RATType ProtocolIE-ID ::= 71
|
||||
id-cdma2000SectorID ProtocolIE-ID ::= 72
|
||||
id-SecurityKey ProtocolIE-ID ::= 73
|
||||
id-UERadioCapability ProtocolIE-ID ::= 74
|
||||
id-GUMMEI-ID ProtocolIE-ID ::= 75
|
||||
id-E-RABInformationListItem ProtocolIE-ID ::= 78
|
||||
id-Direct-Forwarding-Path-Availability ProtocolIE-ID ::= 79
|
||||
id-UEIdentityIndexValue ProtocolIE-ID ::= 80
|
||||
id-cdma2000HOStatus ProtocolIE-ID ::= 83
|
||||
id-cdma2000HORequiredIndication ProtocolIE-ID ::= 84
|
||||
id-E-UTRAN-Trace-ID ProtocolIE-ID ::= 86
|
||||
id-RelativeMMECapacity ProtocolIE-ID ::= 87
|
||||
id-SourceMME-UE-S1AP-ID ProtocolIE-ID ::= 88
|
||||
id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 89
|
||||
id-eNB-StatusTransfer-TransparentContainer ProtocolIE-ID ::= 90
|
||||
id-UE-associatedLogicalS1-ConnectionItem ProtocolIE-ID ::= 91
|
||||
id-ResetType ProtocolIE-ID ::= 92
|
||||
id-UE-associatedLogicalS1-ConnectionListResAck ProtocolIE-ID ::= 93
|
||||
id-E-RABToBeSwitchedULItem ProtocolIE-ID ::= 94
|
||||
id-E-RABToBeSwitchedULList ProtocolIE-ID ::= 95
|
||||
id-S-TMSI ProtocolIE-ID ::= 96
|
||||
id-cdma2000OneXRAND ProtocolIE-ID ::= 97
|
||||
id-RequestType ProtocolIE-ID ::= 98
|
||||
id-UE-S1AP-IDs ProtocolIE-ID ::= 99
|
||||
id-EUTRAN-CGI ProtocolIE-ID ::= 100
|
||||
id-OverloadResponse ProtocolIE-ID ::= 101
|
||||
id-cdma2000OneXSRVCCInfo ProtocolIE-ID ::= 102
|
||||
id-E-RABFailedToBeReleasedList ProtocolIE-ID ::= 103
|
||||
id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 104
|
||||
id-ServedGUMMEIs ProtocolIE-ID ::= 105
|
||||
id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 106
|
||||
id-UESecurityCapabilities ProtocolIE-ID ::= 107
|
||||
id-CSFallbackIndicator ProtocolIE-ID ::= 108
|
||||
id-CNDomain ProtocolIE-ID ::= 109
|
||||
id-E-RABReleasedList ProtocolIE-ID ::= 110
|
||||
id-MessageIdentifier ProtocolIE-ID ::= 111
|
||||
id-SerialNumber ProtocolIE-ID ::= 112
|
||||
id-WarningAreaList ProtocolIE-ID ::= 113
|
||||
id-RepetitionPeriod ProtocolIE-ID ::= 114
|
||||
id-NumberofBroadcastRequest ProtocolIE-ID ::= 115
|
||||
id-WarningType ProtocolIE-ID ::= 116
|
||||
id-WarningSecurityInfo ProtocolIE-ID ::= 117
|
||||
id-DataCodingScheme ProtocolIE-ID ::= 118
|
||||
id-WarningMessageContents ProtocolIE-ID ::= 119
|
||||
id-BroadcastCompletedAreaList ProtocolIE-ID ::= 120
|
||||
id-Inter-SystemInformationTransferTypeEDT ProtocolIE-ID ::= 121
|
||||
id-Inter-SystemInformationTransferTypeMDT ProtocolIE-ID ::= 122
|
||||
id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 123
|
||||
id-SRVCCOperationPossible ProtocolIE-ID ::= 124
|
||||
id-SRVCCHOIndication ProtocolIE-ID ::= 125
|
||||
id-NAS-DownlinkCount ProtocolIE-ID ::= 126
|
||||
id-CSG-Id ProtocolIE-ID ::= 127
|
||||
id-CSG-IdList ProtocolIE-ID ::= 128
|
||||
id-SONConfigurationTransferECT ProtocolIE-ID ::= 129
|
||||
id-SONConfigurationTransferMCT ProtocolIE-ID ::= 130
|
||||
id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 131
|
||||
id-MSClassmark2 ProtocolIE-ID ::= 132
|
||||
id-MSClassmark3 ProtocolIE-ID ::= 133
|
||||
id-RRC-Establishment-Cause ProtocolIE-ID ::= 134
|
||||
id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135
|
||||
id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136
|
||||
id-DefaultPagingDRX ProtocolIE-ID ::= 137
|
||||
id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138
|
||||
id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139
|
||||
END
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,663 +0,0 @@
|
||||
S1AP-PDU {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1)
|
||||
}
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
IMPORTS
|
||||
|
||||
UEAggregateMaximumBitrate,
|
||||
Cause,
|
||||
Cdma2000HORequiredIndication,
|
||||
Cdma2000HOStatus,
|
||||
Cdma2000OneXSRVCCInfo,
|
||||
Cdma2000OneXRAND,
|
||||
Cdma2000PDU,
|
||||
Cdma2000RATType,
|
||||
Cdma2000SectorID,
|
||||
CNDomain,
|
||||
CriticalityDiagnostics,
|
||||
CSFallbackIndicator,
|
||||
CSG-Id,
|
||||
CSG-IdList,
|
||||
Direct-Forwarding-Path-Availability,
|
||||
Global-ENB-ID,
|
||||
EUTRAN-CGI,
|
||||
ENBname,
|
||||
ENB-StatusTransfer-TransparentContainer,
|
||||
ENB-UE-S1AP-ID,
|
||||
GTP-TEID,
|
||||
GUMMEI,
|
||||
HandoverRestrictionList,
|
||||
HandoverType,
|
||||
MMEname,
|
||||
MME-UE-S1AP-ID,
|
||||
MSClassmark2,
|
||||
MSClassmark3,
|
||||
NAS-PDU,
|
||||
NASSecurityParametersfromE-UTRAN,
|
||||
NASSecurityParameterstoE-UTRAN,
|
||||
OverloadResponse,
|
||||
PagingDRX,
|
||||
PLMNidentity,
|
||||
RIMTransfer,
|
||||
RelativeMMECapacity,
|
||||
RequestType,
|
||||
E-RAB-ID,
|
||||
E-RABLevelQoSParameters,
|
||||
E-RABList,
|
||||
SecurityKey,
|
||||
SecurityContext,
|
||||
ServedGUMMEIs,
|
||||
SONConfigurationTransfer,
|
||||
Source-ToTarget-TransparentContainer,
|
||||
SourceBSS-ToTargetBSS-TransparentContainer,
|
||||
SourceeNB-ToTargeteNB-TransparentContainer,
|
||||
SourceRNC-ToTargetRNC-TransparentContainer,
|
||||
SubscriberProfileIDforRFP,
|
||||
SRVCCOperationPossible,
|
||||
SRVCCHOIndication,
|
||||
SupportedTAs,
|
||||
TAI,
|
||||
Target-ToSource-TransparentContainer,
|
||||
TargetBSS-ToSourceBSS-TransparentContainer,
|
||||
TargeteNB-ToSourceeNB-TransparentContainer,
|
||||
TargetID,
|
||||
TargetRNC-ToSourceRNC-TransparentContainer,
|
||||
TimeToWait,
|
||||
TraceActivation,
|
||||
E-UTRAN-Trace-ID,
|
||||
TransportLayerAddress,
|
||||
UEIdentityIndexValue,
|
||||
UEPagingID,
|
||||
UERadioCapability,
|
||||
UE-S1AP-IDs,
|
||||
UE-associatedLogicalS1-ConnectionItem,
|
||||
UESecurityCapabilities,
|
||||
S-TMSI,
|
||||
MessageIdentifier,
|
||||
SerialNumber,
|
||||
WarningAreaList,
|
||||
RepetitionPeriod,
|
||||
NumberofBroadcastRequest,
|
||||
WarningType,
|
||||
WarningSecurityInfo,
|
||||
DataCodingScheme,
|
||||
WarningMessageContents,
|
||||
BroadcastCompletedAreaList,
|
||||
RRC-Establishment-Cause
|
||||
|
||||
FROM S1AP-IEs
|
||||
|
||||
ProcedureCode,
|
||||
Criticality,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM S1AP-CommonDataTypes
|
||||
|
||||
|
||||
id-uEaggregateMaximumBitrate,
|
||||
id-Cause,
|
||||
id-cdma2000HORequiredIndication,
|
||||
id-cdma2000HOStatus,
|
||||
id-cdma2000OneXSRVCCInfo,
|
||||
id-cdma2000OneXRAND,
|
||||
id-cdma2000PDU,
|
||||
id-cdma2000RATType,
|
||||
id-cdma2000SectorID,
|
||||
id-CNDomain,
|
||||
id-CriticalityDiagnostics,
|
||||
id-CSFallbackIndicator,
|
||||
id-CSG-Id,
|
||||
id-CSG-IdList,
|
||||
id-DefaultPagingDRX,
|
||||
id-Direct-Forwarding-Path-Availability,
|
||||
id-Global-ENB-ID,
|
||||
id-EUTRAN-CGI,
|
||||
id-eNBname,
|
||||
id-eNB-StatusTransfer-TransparentContainer,
|
||||
id-eNB-UE-S1AP-ID,
|
||||
id-GERANtoLTEHOInformationRes,
|
||||
id-GUMMEI-ID,
|
||||
id-HandoverRestrictionList,
|
||||
id-HandoverType,
|
||||
id-InitialContextSetup,
|
||||
id-Inter-SystemInformationTransferTypeEDT,
|
||||
id-Inter-SystemInformationTransferTypeMDT,
|
||||
id-NAS-DownlinkCount,
|
||||
id-MMEname,
|
||||
id-MME-UE-S1AP-ID,
|
||||
id-MSClassmark2,
|
||||
id-MSClassmark3,
|
||||
id-NAS-PDU,
|
||||
id-NASSecurityParametersfromE-UTRAN,
|
||||
id-NASSecurityParameterstoE-UTRAN,
|
||||
id-OverloadResponse,
|
||||
id-pagingDRX,
|
||||
id-RelativeMMECapacity,
|
||||
id-RequestType,
|
||||
id-E-RABAdmittedItem,
|
||||
id-E-RABAdmittedList,
|
||||
id-E-RABDataForwardingItem,
|
||||
id-E-RABFailedToModifyList,
|
||||
id-E-RABFailedToReleaseList,
|
||||
id-E-RABFailedtoSetupItemHOReqAck,
|
||||
id-E-RABFailedToSetupListBearerSURes,
|
||||
id-E-RABFailedToSetupListCtxtSURes,
|
||||
id-E-RABFailedToSetupListHOReqAck,
|
||||
id-E-RABFailedToBeReleasedList,
|
||||
id-E-RABModify,
|
||||
id-E-RABModifyItemBearerModRes,
|
||||
id-E-RABModifyListBearerModRes,
|
||||
id-E-RABRelease,
|
||||
id-E-RABReleaseItemBearerRelComp,
|
||||
id-E-RABReleaseItemHOCmd,
|
||||
id-E-RABReleaseListBearerRelComp,
|
||||
id-E-RABReleaseIndication,
|
||||
id-E-RABSetup,
|
||||
id-E-RABSetupItemBearerSURes,
|
||||
id-E-RABSetupItemCtxtSURes,
|
||||
id-E-RABSetupListBearerSURes,
|
||||
id-E-RABSetupListCtxtSURes,
|
||||
id-E-RABSubjecttoDataForwardingList,
|
||||
id-E-RABToBeModifiedItemBearerModReq,
|
||||
id-E-RABToBeModifiedListBearerModReq,
|
||||
id-E-RABToBeReleasedList,
|
||||
id-E-RABReleasedList,
|
||||
id-E-RABToBeSetupItemBearerSUReq,
|
||||
id-E-RABToBeSetupItemCtxtSUReq,
|
||||
id-E-RABToBeSetupItemHOReq,
|
||||
id-E-RABToBeSetupListBearerSUReq,
|
||||
id-E-RABToBeSetupListCtxtSUReq,
|
||||
id-E-RABToBeSetupListHOReq,
|
||||
id-E-RABToBeSwitchedDLItem,
|
||||
id-E-RABToBeSwitchedDLList,
|
||||
id-E-RABToBeSwitchedULList,
|
||||
id-E-RABToBeSwitchedULItem,
|
||||
id-E-RABtoReleaseListHOCmd,
|
||||
id-SecurityKey,
|
||||
id-SecurityContext,
|
||||
id-ServedGUMMEIs,
|
||||
id-SONConfigurationTransferECT,
|
||||
id-SONConfigurationTransferMCT,
|
||||
id-Source-ToTarget-TransparentContainer,
|
||||
id-Source-ToTarget-TransparentContainer-Secondary,
|
||||
id-SourceMME-UE-S1AP-ID,
|
||||
id-SRVCCOperationPossible,
|
||||
id-SRVCCHOIndication,
|
||||
id-SubscriberProfileIDforRFP,
|
||||
id-SupportedTAs,
|
||||
id-S-TMSI,
|
||||
id-TAI,
|
||||
id-TAIItem,
|
||||
id-TAIList,
|
||||
id-Target-ToSource-TransparentContainer,
|
||||
id-Target-ToSource-TransparentContainer-Secondary,
|
||||
id-TargetID,
|
||||
id-TimeToWait,
|
||||
id-TraceActivation,
|
||||
id-E-UTRAN-Trace-ID,
|
||||
id-UEIdentityIndexValue,
|
||||
id-UEPagingID,
|
||||
id-UERadioCapability,
|
||||
id-UTRANtoLTEHOInformationRes,
|
||||
id-UE-associatedLogicalS1-ConnectionListResAck,
|
||||
id-UE-associatedLogicalS1-ConnectionItem,
|
||||
id-UESecurityCapabilities,
|
||||
id-UE-S1AP-IDs,
|
||||
id-ResetType,
|
||||
id-MessageIdentifier,
|
||||
id-SerialNumber,
|
||||
id-WarningAreaList,
|
||||
id-RepetitionPeriod,
|
||||
id-NumberofBroadcastRequest,
|
||||
id-WarningType,
|
||||
id-WarningSecurityInfo,
|
||||
id-DataCodingScheme,
|
||||
id-WarningMessageContents,
|
||||
id-BroadcastCompletedAreaList,
|
||||
id-RRC-Establishment-Cause,
|
||||
id-TraceCollectionEntityIPAddress,
|
||||
maxnoofTAIs,
|
||||
maxNrOfErrors,
|
||||
maxNrOfE-RABs,
|
||||
maxNrOfIndividualS1ConnectionsToReset,
|
||||
maxnoofEmergencyAreaID,
|
||||
maxnoofCellID,
|
||||
maxnoofTAIforWarning,
|
||||
maxnoofCellinTAI,
|
||||
maxnoofCellinEAI,
|
||||
|
||||
id-CellTrafficTrace,
|
||||
id-DeactivateTrace,
|
||||
id-downlinkNASTransport,
|
||||
id-DownlinkS1cdma2000tunneling,
|
||||
id-eNBStatusTransfer,
|
||||
id-ErrorIndication,
|
||||
id-HandoverCancel,
|
||||
id-HandoverNotification,
|
||||
id-HandoverPreparation,
|
||||
id-HandoverResourceAllocation,
|
||||
id-InitialContextSetup,
|
||||
id-initialUEMessage,
|
||||
id-ENBConfigurationUpdate,
|
||||
id-LocationReportingControl,
|
||||
id-LocationReportingFailureIndication,
|
||||
id-LocationReport,
|
||||
id-eNBDirectInformationTransfer,
|
||||
id-MMEConfigurationUpdate,
|
||||
id-MMEDirectInformationTransfer,
|
||||
id-MMEStatusTransfer,
|
||||
id-NASNonDeliveryIndication,
|
||||
id-OverloadStart,
|
||||
id-OverloadStop,
|
||||
id-Paging,
|
||||
id-PathSwitchRequest,
|
||||
id-PrivateMessage,
|
||||
id-Reset,
|
||||
id-S1Setup,
|
||||
id-E-RABModify,
|
||||
id-E-RABRelease,
|
||||
id-E-RABReleaseIndication,
|
||||
id-E-RABSetup,
|
||||
id-TraceFailureIndication,
|
||||
id-TraceStart,
|
||||
id-UECapabilityInfoIndication,
|
||||
id-UEContextModification,
|
||||
id-UEContextRelease,
|
||||
id-UEContextReleaseRequest,
|
||||
id-uplinkNASTransport,
|
||||
id-UplinkS1cdma2000tunneling,
|
||||
id-WriteReplaceWarning,
|
||||
id-eNBConfigurationTransfer,
|
||||
id-MMEConfigurationTransfer,
|
||||
maxProtocolIEs
|
||||
FROM S1AP-Constants;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- S1 SETUP ELEMENTARY PROCEDURE
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-ELEMENTARY-PROCEDURE ::= CLASS {
|
||||
&InitiatingMessage ,
|
||||
&SuccessfulOutcome OPTIONAL,
|
||||
&UnsuccessfulOutcome OPTIONAL,
|
||||
&procedureCode ProcedureCode UNIQUE,
|
||||
&criticality Criticality DEFAULT ignore
|
||||
}
|
||||
WITH SYNTAX {
|
||||
INITIATING MESSAGE &InitiatingMessage
|
||||
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
|
||||
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
|
||||
PROCEDURE CODE &procedureCode
|
||||
[CRITICALITY &criticality]
|
||||
}
|
||||
|
||||
S1AP-PDU ::= CHOICE {
|
||||
initiatingMessage InitiatingMessage,
|
||||
successfulOutcome SuccessfulOutcome,
|
||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
||||
...
|
||||
}
|
||||
|
||||
InitiatingMessage ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
SuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
UnsuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
HandoverRequired ::= SEQUENCE {
|
||||
handoverRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCommand ::= SEQUENCE {
|
||||
handoverCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverPreparationFailure ::= SEQUENCE {
|
||||
handoverPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverRequest ::= SEQUENCE {
|
||||
handoverRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverRequestAcknowledge ::= SEQUENCE {
|
||||
handoverRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverFailure ::= SEQUENCE {
|
||||
handoverFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverNotify ::= SEQUENCE {
|
||||
handoverNotify-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequest ::= SEQUENCE {
|
||||
pathSwitchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequestAcknowledge ::= SEQUENCE {
|
||||
pathSwitchRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequestFailure ::= SEQUENCE {
|
||||
pathSwitchRequestFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABSetupRequest ::= SEQUENCE {
|
||||
e-RABSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABSetupResponse ::= SEQUENCE {
|
||||
e-RABSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABModifyRequest ::= SEQUENCE {
|
||||
e-RABModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABModifyResponse ::= SEQUENCE {
|
||||
e-RABModifyResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseIndication ::= SEQUENCE {
|
||||
e-RABReleaseIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseCommand ::= SEQUENCE {
|
||||
e-RABReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseResponse ::= SEQUENCE {
|
||||
e-RABReleaseResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupRequest ::= SEQUENCE {
|
||||
initialContextSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupResponse ::= SEQUENCE {
|
||||
initialContextSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupFailure ::= SEQUENCE {
|
||||
initialContextSetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseRequest ::= SEQUENCE {
|
||||
ueContextReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
Paging ::= SEQUENCE {
|
||||
paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkNASTransport ::= SEQUENCE {
|
||||
downlinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialUEMessage ::= SEQUENCE {
|
||||
initialUEMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkNASTransport ::= SEQUENCE {
|
||||
uplinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
NASNonDeliveryIndication ::= SEQUENCE {
|
||||
nasNonDeliveryIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCancel ::= SEQUENCE {
|
||||
handoverCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCancelAcknowledge ::= SEQUENCE {
|
||||
handoverCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
Reset ::= SEQUENCE {
|
||||
reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ResetAcknowledge ::= SEQUENCE {
|
||||
resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupResponse ::= SEQUENCE {
|
||||
s1SetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupRequest ::= SEQUENCE {
|
||||
s1SetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupFailure ::= SEQUENCE
|
||||
{
|
||||
s1SetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ErrorIndication ::= SEQUENCE {
|
||||
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdate ::= SEQUENCE {
|
||||
eNBConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||
eNBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdateFailure ::= SEQUENCE {
|
||||
eNBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdate ::= SEQUENCE {
|
||||
mmeConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||
mmeConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdateFailure ::= SEQUENCE {
|
||||
mmeConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkS1cdma2000tunneling ::= SEQUENCE {
|
||||
downlinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkS1cdma2000tunneling ::= SEQUENCE {
|
||||
uplinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationRequest ::= SEQUENCE {
|
||||
ueContextModificationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationResponse ::= SEQUENCE {
|
||||
ueContextModificationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationFailure ::= SEQUENCE {
|
||||
ueContextModificationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UECapabilityInfoIndication ::= SEQUENCE {
|
||||
ueCapabilityInfoIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseCommand ::= SEQUENCE {
|
||||
ueContextReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseComplete ::= SEQUENCE {
|
||||
ueContextReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBStatusTransfer ::= SEQUENCE {
|
||||
eNBStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEStatusTransfer ::= SEQUENCE {
|
||||
mmeStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DeactivateTrace ::= SEQUENCE {
|
||||
deactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
TraceStart ::= SEQUENCE {
|
||||
traceStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
TraceFailureIndication ::= SEQUENCE {
|
||||
traceFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
CellTrafficTrace ::= SEQUENCE {
|
||||
cellTrafficTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReportingControl ::= SEQUENCE {
|
||||
locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReportingFailureIndication ::= SEQUENCE {
|
||||
locationReportingFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReport ::= SEQUENCE {
|
||||
locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
OverloadStart ::= SEQUENCE {
|
||||
overloadStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
OverloadStop ::= SEQUENCE {
|
||||
overloadStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
WriteReplaceWarningRequest ::= SEQUENCE {
|
||||
writeReplaceWarningRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
WriteReplaceWarningResponse ::= SEQUENCE {
|
||||
writeReplaceWarningResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBDirectInformationTransfer ::= SEQUENCE {
|
||||
eNBDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEDirectInformationTransfer ::= SEQUENCE {
|
||||
mmeDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationTransfer ::= SEQUENCE {
|
||||
eNBConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationTransfer ::= SEQUENCE {
|
||||
mmeConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PrivateMessage ::= SEQUENCE {
|
||||
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
IE ::= SEQUENCE {
|
||||
id ProtocolIE-ID,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
END
|
||||
@@ -1,217 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Common definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-CommonDataTypes {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
Criticality ::= ENUMERATED { reject, ignore, notify }
|
||||
|
||||
Presence ::= ENUMERATED { optional, conditional, mandatory }
|
||||
|
||||
PrivateIE-ID ::= CHOICE {
|
||||
local INTEGER (0..65535),
|
||||
global OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
ProcedureCode ::= INTEGER {
|
||||
id-HandoverPreparation(0),
|
||||
id-HandoverResourceAllocation(1),
|
||||
id-HandoverNotification(2),
|
||||
id-PathSwitchRequest(3),
|
||||
id-HandoverCancel(4),
|
||||
id-E-RABSetup(5),
|
||||
id-E-RABModify(6),
|
||||
id-E-RABRelease(7),
|
||||
id-E-RABReleaseIndication(8),
|
||||
id-InitialContextSetup(9),
|
||||
id-Paging(10),
|
||||
id-downlinkNASTransport(11),
|
||||
id-initialUEMessage(12),
|
||||
id-uplinkNASTransport(13),
|
||||
id-Reset(14),
|
||||
id-ErrorIndication(15),
|
||||
id-NASNonDeliveryIndication(16),
|
||||
id-S1Setup(17),
|
||||
id-UEContextReleaseRequest(18),
|
||||
id-DownlinkS1cdma2000tunneling(19),
|
||||
id-UplinkS1cdma2000tunneling(20),
|
||||
id-UEContextModification(21),
|
||||
id-UECapabilityInfoIndication(22),
|
||||
id-UEContextRelease(23),
|
||||
id-eNBStatusTransfer(24),
|
||||
id-MMEStatusTransfer(25),
|
||||
id-DeactivateTrace(26),
|
||||
id-TraceStart(27),
|
||||
id-TraceFailureIndication(28),
|
||||
id-ENBConfigurationUpdate(29),
|
||||
id-MMEConfigurationUpdate(30),
|
||||
id-LocationReportingControl(31),
|
||||
id-LocationReportingFailureIndication(32),
|
||||
id-LocationReport(33),
|
||||
id-OverloadStart(34),
|
||||
id-OverloadStop(35),
|
||||
id-WriteReplaceWarning(36),
|
||||
id-eNBDirectInformationTransfer(37),
|
||||
id-MMEDirectInformationTransfer(38),
|
||||
id-PrivateMessage(39),
|
||||
id-eNBConfigurationTransfer(40),
|
||||
id-MMEConfigurationTransfer(41),
|
||||
id-CellTrafficTrace(42),
|
||||
id-Kill(43),
|
||||
id-downlinkUEAssociatedLPPaTransport(44),
|
||||
id-uplinkUEAssociatedLPPaTransport(45),
|
||||
id-downlinkNonUEAssociatedLPPaTransport(46),
|
||||
id-uplinkNonUEAssociatedLPPaTransport(47)
|
||||
} (0..255)
|
||||
|
||||
ProtocolExtensionID ::= INTEGER (0..65535)
|
||||
|
||||
ProtocolIE-ID ::= INTEGER {
|
||||
id-MME-UE-S1AP-ID(0),
|
||||
id-HandoverType(1),
|
||||
id-Cause(2),
|
||||
id-SourceID(3),
|
||||
id-TargetID (4),
|
||||
id-eNB-UE-S1AP-ID(8),
|
||||
id-E-RABSubjecttoDataForwardingList(12),
|
||||
id-E-RABtoReleaseListHOCmd(13),
|
||||
id-E-RABDataForwardingItem(14),
|
||||
id-E-RABReleaseItemBearerRelComp(15),
|
||||
id-E-RABToBeSetupListBearerSUReq(16),
|
||||
id-E-RABToBeSetupItemBearerSUReq(17),
|
||||
id-E-RABAdmittedList(18),
|
||||
id-E-RABFailedToSetupListHOReqAck(19),
|
||||
id-E-RABAdmittedItem(20),
|
||||
id-E-RABFailedtoSetupItemHOReqAck(21),
|
||||
id-E-RABToBeSwitchedDLList(22),
|
||||
id-E-RABToBeSwitchedDLItem(23),
|
||||
id-E-RABToBeSetupListCtxtSUReq(24),
|
||||
id-TraceActivation(25),
|
||||
id-NAS-PDU(26),
|
||||
id-E-RABToBeSetupItemHOReq(27),
|
||||
id-E-RABSetupListBearerSURes(28),
|
||||
id-E-RABFailedToSetupListBearerSURes(29),
|
||||
id-E-RABToBeModifiedListBearerModReq(30),
|
||||
id-E-RABModifyListBearerModRes(31),
|
||||
id-E-RABFailedToModifyList(32),
|
||||
id-E-RABToBeReleasedList(33),
|
||||
id-E-RABFailedToReleaseList(34),
|
||||
id-E-RABItem(35),
|
||||
id-E-RABToBeModifiedItemBearerModReq(36),
|
||||
id-E-RABModifyItemBearerModRes(37),
|
||||
id-E-RABReleaseItem(38),
|
||||
id-E-RABSetupItemBearerSURes(39),
|
||||
id-SecurityContext(40),
|
||||
id-HandoverRestrictionList(41),
|
||||
id-UEPagingID(43),
|
||||
id-pagingDRX(44),
|
||||
id-TAIList(46),
|
||||
id-TAIItem(47),
|
||||
id-E-RABFailedToSetupListCtxtSURes(48),
|
||||
id-E-RABReleaseItemHOCmd(49),
|
||||
id-E-RABSetupItemCtxtSURes(50),
|
||||
id-E-RABSetupListCtxtSURes(51),
|
||||
id-E-RABToBeSetupItemCtxtSUReq(52),
|
||||
id-E-RABToBeSetupListHOReq(53),
|
||||
id-GERANtoLTEHOInformationRes(55),
|
||||
id-UTRANtoLTEHOInformationRes(57),
|
||||
id-CriticalityDiagnostics(58),
|
||||
id-Global-ENB-ID(59),
|
||||
id-eNBname(60),
|
||||
id-MMEname(61),
|
||||
id-ServedPLMNs(63),
|
||||
id-SupportedTAs(64),
|
||||
id-TimeToWait(65),
|
||||
id-uEaggregateMaximumBitrate(66),
|
||||
id-TAI(67),
|
||||
id-E-RABReleaseListBearerRelComp(69),
|
||||
id-cdma2000PDU(70),
|
||||
id-cdma2000RATType(71),
|
||||
id-cdma2000SectorID(72),
|
||||
id-SecurityKey(73),
|
||||
id-UERadioCapability(74),
|
||||
id-GUMMEI-ID(75),
|
||||
id-E-RABInformationListItem(78),
|
||||
id-Direct-Forwarding-Path-Availability(79),
|
||||
id-UEIdentityIndexValue(80),
|
||||
id-cdma2000HOStatus(83),
|
||||
id-cdma2000HORequiredIndication(84),
|
||||
id-E-UTRAN-Trace-ID(86),
|
||||
id-RelativeMMECapacity(87),
|
||||
id-SourceMME-UE-S1AP-ID(88),
|
||||
id-Bearers-SubjectToStatusTransfer-Item(89),
|
||||
id-eNB-StatusTransfer-TransparentContainer(90),
|
||||
id-UE-associatedLogicalS1-ConnectionItem(91),
|
||||
id-ResetType(92),
|
||||
id-UE-associatedLogicalS1-ConnectionListResAck(93),
|
||||
id-E-RABToBeSwitchedULItem(94),
|
||||
id-E-RABToBeSwitchedULList(95),
|
||||
id-S-TMSI(96),
|
||||
id-cdma2000OneXRAND(97),
|
||||
id-RequestType(98),
|
||||
id-UE-S1AP-IDs(99),
|
||||
id-EUTRAN-CGI(100),
|
||||
id-OverloadResponse(101),
|
||||
id-cdma2000OneXSRVCCInfo(102),
|
||||
id-E-RABFailedToBeReleasedList(103),
|
||||
id-Source-ToTarget-TransparentContainer(104),
|
||||
id-ServedGUMMEIs(105),
|
||||
id-SubscriberProfileIDforRFP(106),
|
||||
id-UESecurityCapabilities(107),
|
||||
id-CSFallbackIndicator(108),
|
||||
id-CNDomain(109),
|
||||
id-E-RABReleasedList(110),
|
||||
id-MessageIdentifier(111),
|
||||
id-SerialNumber(112),
|
||||
id-WarningAreaList(113),
|
||||
id-RepetitionPeriod(114),
|
||||
id-NumberofBroadcastRequest(115),
|
||||
id-WarningType(116),
|
||||
id-WarningSecurityInfo(117),
|
||||
id-DataCodingScheme(118),
|
||||
id-WarningMessageContents(119),
|
||||
id-BroadcastCompletedAreaList(120),
|
||||
id-Inter-SystemInformationTransferTypeEDT(121),
|
||||
id-Inter-SystemInformationTransferTypeMDT(122),
|
||||
id-Target-ToSource-TransparentContainer(123),
|
||||
id-SRVCCOperationPossible(124),
|
||||
id-SRVCCHOIndication(125),
|
||||
id-NAS-DownlinkCount(126),
|
||||
id-CSG-Id(127),
|
||||
id-CSG-IdList(128),
|
||||
id-SONConfigurationTransferECT(129),
|
||||
id-SONConfigurationTransferMCT(130),
|
||||
id-TraceCollectionEntityIPAddress(131),
|
||||
id-MSClassmark2(132),
|
||||
id-MSClassmark3(133),
|
||||
id-RRC-Establishment-Cause(134),
|
||||
id-NASSecurityParametersfromE-UTRAN(135),
|
||||
id-NASSecurityParameterstoE-UTRAN(136),
|
||||
id-DefaultPagingDRX(137),
|
||||
id-Source-ToTarget-TransparentContainer-Secondary(138),
|
||||
id-Target-ToSource-TransparentContainer-Secondary(139),
|
||||
id-EUTRANRoundTripDelayEstimationInfo(140),
|
||||
id-BroadcastCancelledAreaList(141),
|
||||
id-ConcurrentWarningMessageIndicator(142),
|
||||
id-Data-Forwarding-Not-Possible(143),
|
||||
id-ExtendedRepetitionPeriod(144),
|
||||
id-CellAccessMode(145),
|
||||
id-CSGMembershipStatus(146),
|
||||
id-LPPa-PDU(147),
|
||||
id-Routing-ID(148),
|
||||
id-Time-Synchronization-Info(149),
|
||||
id-PS-ServiceNotAvailable(150),
|
||||
id-RegisteredLAI(159)
|
||||
} (0..65535)
|
||||
|
||||
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
|
||||
|
||||
END
|
||||
@@ -1,265 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Constant definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-Constants {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
ProcedureCode,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM S1AP-CommonDataTypes;
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-HandoverPreparation ProcedureCode ::= 0
|
||||
id-HandoverResourceAllocation ProcedureCode ::= 1
|
||||
id-HandoverNotification ProcedureCode ::= 2
|
||||
id-PathSwitchRequest ProcedureCode ::= 3
|
||||
id-HandoverCancel ProcedureCode ::= 4
|
||||
id-E-RABSetup ProcedureCode ::= 5
|
||||
id-E-RABModify ProcedureCode ::= 6
|
||||
id-E-RABRelease ProcedureCode ::= 7
|
||||
id-E-RABReleaseIndication ProcedureCode ::= 8
|
||||
id-InitialContextSetup ProcedureCode ::= 9
|
||||
id-Paging ProcedureCode ::= 10
|
||||
id-downlinkNASTransport ProcedureCode ::= 11
|
||||
id-initialUEMessage ProcedureCode ::= 12
|
||||
id-uplinkNASTransport ProcedureCode ::= 13
|
||||
id-Reset ProcedureCode::= 14
|
||||
id-ErrorIndication ProcedureCode ::= 15
|
||||
id-NASNonDeliveryIndication ProcedureCode ::= 16
|
||||
id-S1Setup ProcedureCode ::= 17
|
||||
id-UEContextReleaseRequest ProcedureCode ::= 18
|
||||
id-DownlinkS1cdma2000tunneling ProcedureCode ::= 19
|
||||
id-UplinkS1cdma2000tunneling ProcedureCode ::= 20
|
||||
id-UEContextModification ProcedureCode ::= 21
|
||||
id-UECapabilityInfoIndication ProcedureCode ::= 22
|
||||
id-UEContextRelease ProcedureCode ::= 23
|
||||
id-eNBStatusTransfer ProcedureCode ::= 24
|
||||
id-MMEStatusTransfer ProcedureCode ::= 25
|
||||
id-DeactivateTrace ProcedureCode ::= 26
|
||||
id-TraceStart ProcedureCode ::= 27
|
||||
id-TraceFailureIndication ProcedureCode ::= 28
|
||||
id-ENBConfigurationUpdate ProcedureCode ::= 29
|
||||
id-MMEConfigurationUpdate ProcedureCode ::= 30
|
||||
id-LocationReportingControl ProcedureCode ::= 31
|
||||
id-LocationReportingFailureIndication ProcedureCode ::= 32
|
||||
id-LocationReport ProcedureCode ::= 33
|
||||
id-OverloadStart ProcedureCode ::= 34
|
||||
id-OverloadStop ProcedureCode ::= 35
|
||||
id-WriteReplaceWarning ProcedureCode ::= 36
|
||||
id-eNBDirectInformationTransfer ProcedureCode ::= 37
|
||||
id-MMEDirectInformationTransfer ProcedureCode ::= 38
|
||||
id-PrivateMessage ProcedureCode ::= 39
|
||||
id-eNBConfigurationTransfer ProcedureCode ::= 40
|
||||
id-MMEConfigurationTransfer ProcedureCode ::= 41
|
||||
id-CellTrafficTrace ProcedureCode ::= 42
|
||||
id-Kill ProcedureCode ::= 43
|
||||
id-downlinkUEAssociatedLPPaTransport ProcedureCode ::= 44
|
||||
id-uplinkUEAssociatedLPPaTransport ProcedureCode ::= 45
|
||||
id-downlinkNonUEAssociatedLPPaTransport ProcedureCode ::= 46
|
||||
id-uplinkNonUEAssociatedLPPaTransport ProcedureCode ::= 47
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Extension constants
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxPrivateIEs INTEGER ::= 65535
|
||||
maxProtocolExtensions INTEGER ::= 65535
|
||||
maxProtocolIEs INTEGER ::= 65535
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Lists
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxNrOfCSGs INTEGER ::= 256
|
||||
maxNrOfE-RABs INTEGER ::= 256
|
||||
maxnoofTAIs INTEGER ::= 256
|
||||
maxnoofTACs INTEGER ::= 256
|
||||
maxNrOfErrors INTEGER ::= 256
|
||||
maxnoofBPLMNs INTEGER ::= 6
|
||||
maxnoofPLMNsPerMME INTEGER ::= 32
|
||||
maxnoofEPLMNs INTEGER ::= 15
|
||||
maxnoofEPLMNsPlusOne INTEGER ::= 16
|
||||
maxnoofForbLACs INTEGER ::= 4096
|
||||
maxnoofForbTACs INTEGER ::= 4096
|
||||
maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256
|
||||
maxnoofCells INTEGER ::= 16
|
||||
maxnoofTAIforWarning INTEGER ::= 65535
|
||||
maxnoofCellID INTEGER ::= 65535
|
||||
maxnoofEmergencyAreaID INTEGER ::= 65535
|
||||
maxnoofCellinTAI INTEGER ::= 65535
|
||||
maxnoofCellinEAI INTEGER ::= 65535
|
||||
maxnoofeNBX2TLAs INTEGER ::= 2
|
||||
maxnoofRATs INTEGER ::= 8
|
||||
maxnoofGroupIDs INTEGER ::= 65535
|
||||
maxnoofMMECs INTEGER ::= 256
|
||||
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-MME-UE-S1AP-ID ProtocolIE-ID ::= 0
|
||||
id-HandoverType ProtocolIE-ID ::= 1
|
||||
id-Cause ProtocolIE-ID ::= 2
|
||||
id-SourceID ProtocolIE-ID ::= 3
|
||||
id-TargetID ProtocolIE-ID ::= 4
|
||||
id-eNB-UE-S1AP-ID ProtocolIE-ID ::= 8
|
||||
id-E-RABSubjecttoDataForwardingList ProtocolIE-ID ::= 12
|
||||
id-E-RABtoReleaseListHOCmd ProtocolIE-ID ::= 13
|
||||
id-E-RABDataForwardingItem ProtocolIE-ID ::= 14
|
||||
id-E-RABReleaseItemBearerRelComp ProtocolIE-ID ::= 15
|
||||
id-E-RABToBeSetupListBearerSUReq ProtocolIE-ID ::= 16
|
||||
id-E-RABToBeSetupItemBearerSUReq ProtocolIE-ID ::= 17
|
||||
id-E-RABAdmittedList ProtocolIE-ID ::= 18
|
||||
id-E-RABFailedToSetupListHOReqAck ProtocolIE-ID ::= 19
|
||||
id-E-RABAdmittedItem ProtocolIE-ID ::= 20
|
||||
id-E-RABFailedtoSetupItemHOReqAck ProtocolIE-ID ::= 21
|
||||
id-E-RABToBeSwitchedDLList ProtocolIE-ID ::= 22
|
||||
id-E-RABToBeSwitchedDLItem ProtocolIE-ID ::= 23
|
||||
id-E-RABToBeSetupListCtxtSUReq ProtocolIE-ID ::= 24
|
||||
id-TraceActivation ProtocolIE-ID ::= 25
|
||||
id-NAS-PDU ProtocolIE-ID ::= 26
|
||||
id-E-RABToBeSetupItemHOReq ProtocolIE-ID ::= 27
|
||||
id-E-RABSetupListBearerSURes ProtocolIE-ID ::= 28
|
||||
id-E-RABFailedToSetupListBearerSURes ProtocolIE-ID ::= 29
|
||||
id-E-RABToBeModifiedListBearerModReq ProtocolIE-ID ::= 30
|
||||
id-E-RABModifyListBearerModRes ProtocolIE-ID ::= 31
|
||||
id-E-RABFailedToModifyList ProtocolIE-ID ::= 32
|
||||
id-E-RABToBeReleasedList ProtocolIE-ID ::= 33
|
||||
id-E-RABFailedToReleaseList ProtocolIE-ID ::= 34
|
||||
id-E-RABItem ProtocolIE-ID ::= 35
|
||||
id-E-RABToBeModifiedItemBearerModReq ProtocolIE-ID ::= 36
|
||||
id-E-RABModifyItemBearerModRes ProtocolIE-ID ::= 37
|
||||
id-E-RABReleaseItem ProtocolIE-ID ::= 38
|
||||
id-E-RABSetupItemBearerSURes ProtocolIE-ID ::= 39
|
||||
id-SecurityContext ProtocolIE-ID ::= 40
|
||||
id-HandoverRestrictionList ProtocolIE-ID ::= 41
|
||||
id-UEPagingID ProtocolIE-ID ::= 43
|
||||
id-pagingDRX ProtocolIE-ID ::= 44
|
||||
id-TAIList ProtocolIE-ID ::= 46
|
||||
id-TAIItem ProtocolIE-ID ::= 47
|
||||
id-E-RABFailedToSetupListCtxtSURes ProtocolIE-ID ::= 48
|
||||
id-E-RABReleaseItemHOCmd ProtocolIE-ID ::= 49
|
||||
id-E-RABSetupItemCtxtSURes ProtocolIE-ID ::= 50
|
||||
id-E-RABSetupListCtxtSURes ProtocolIE-ID ::= 51
|
||||
id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-ID ::= 52
|
||||
id-E-RABToBeSetupListHOReq ProtocolIE-ID ::= 53
|
||||
id-GERANtoLTEHOInformationRes ProtocolIE-ID ::= 55
|
||||
id-UTRANtoLTEHOInformationRes ProtocolIE-ID ::= 57
|
||||
id-CriticalityDiagnostics ProtocolIE-ID ::= 58
|
||||
id-Global-ENB-ID ProtocolIE-ID ::= 59
|
||||
id-eNBname ProtocolIE-ID ::= 60
|
||||
id-MMEname ProtocolIE-ID ::= 61
|
||||
id-ServedPLMNs ProtocolIE-ID ::= 63
|
||||
id-SupportedTAs ProtocolIE-ID ::= 64
|
||||
id-TimeToWait ProtocolIE-ID ::= 65
|
||||
id-uEaggregateMaximumBitrate ProtocolIE-ID ::= 66
|
||||
id-TAI ProtocolIE-ID ::= 67
|
||||
id-E-RABReleaseListBearerRelComp ProtocolIE-ID ::= 69
|
||||
id-cdma2000PDU ProtocolIE-ID ::= 70
|
||||
id-cdma2000RATType ProtocolIE-ID ::= 71
|
||||
id-cdma2000SectorID ProtocolIE-ID ::= 72
|
||||
id-SecurityKey ProtocolIE-ID ::= 73
|
||||
id-UERadioCapability ProtocolIE-ID ::= 74
|
||||
id-GUMMEI-ID ProtocolIE-ID ::= 75
|
||||
id-E-RABInformationListItem ProtocolIE-ID ::= 78
|
||||
id-Direct-Forwarding-Path-Availability ProtocolIE-ID ::= 79
|
||||
id-UEIdentityIndexValue ProtocolIE-ID ::= 80
|
||||
id-cdma2000HOStatus ProtocolIE-ID ::= 83
|
||||
id-cdma2000HORequiredIndication ProtocolIE-ID ::= 84
|
||||
id-E-UTRAN-Trace-ID ProtocolIE-ID ::= 86
|
||||
id-RelativeMMECapacity ProtocolIE-ID ::= 87
|
||||
id-SourceMME-UE-S1AP-ID ProtocolIE-ID ::= 88
|
||||
id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 89
|
||||
id-eNB-StatusTransfer-TransparentContainer ProtocolIE-ID ::= 90
|
||||
id-UE-associatedLogicalS1-ConnectionItem ProtocolIE-ID ::= 91
|
||||
id-ResetType ProtocolIE-ID ::= 92
|
||||
id-UE-associatedLogicalS1-ConnectionListResAck ProtocolIE-ID ::= 93
|
||||
id-E-RABToBeSwitchedULItem ProtocolIE-ID ::= 94
|
||||
id-E-RABToBeSwitchedULList ProtocolIE-ID ::= 95
|
||||
id-S-TMSI ProtocolIE-ID ::= 96
|
||||
id-cdma2000OneXRAND ProtocolIE-ID ::= 97
|
||||
id-RequestType ProtocolIE-ID ::= 98
|
||||
id-UE-S1AP-IDs ProtocolIE-ID ::= 99
|
||||
id-EUTRAN-CGI ProtocolIE-ID ::= 100
|
||||
id-OverloadResponse ProtocolIE-ID ::= 101
|
||||
id-cdma2000OneXSRVCCInfo ProtocolIE-ID ::= 102
|
||||
id-E-RABFailedToBeReleasedList ProtocolIE-ID ::= 103
|
||||
id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 104
|
||||
id-ServedGUMMEIs ProtocolIE-ID ::= 105
|
||||
id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 106
|
||||
id-UESecurityCapabilities ProtocolIE-ID ::= 107
|
||||
id-CSFallbackIndicator ProtocolIE-ID ::= 108
|
||||
id-CNDomain ProtocolIE-ID ::= 109
|
||||
id-E-RABReleasedList ProtocolIE-ID ::= 110
|
||||
id-MessageIdentifier ProtocolIE-ID ::= 111
|
||||
id-SerialNumber ProtocolIE-ID ::= 112
|
||||
id-WarningAreaList ProtocolIE-ID ::= 113
|
||||
id-RepetitionPeriod ProtocolIE-ID ::= 114
|
||||
id-NumberofBroadcastRequest ProtocolIE-ID ::= 115
|
||||
id-WarningType ProtocolIE-ID ::= 116
|
||||
id-WarningSecurityInfo ProtocolIE-ID ::= 117
|
||||
id-DataCodingScheme ProtocolIE-ID ::= 118
|
||||
id-WarningMessageContents ProtocolIE-ID ::= 119
|
||||
id-BroadcastCompletedAreaList ProtocolIE-ID ::= 120
|
||||
id-Inter-SystemInformationTransferTypeEDT ProtocolIE-ID ::= 121
|
||||
id-Inter-SystemInformationTransferTypeMDT ProtocolIE-ID ::= 122
|
||||
id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 123
|
||||
id-SRVCCOperationPossible ProtocolIE-ID ::= 124
|
||||
id-SRVCCHOIndication ProtocolIE-ID ::= 125
|
||||
id-NAS-DownlinkCount ProtocolIE-ID ::= 126
|
||||
id-CSG-Id ProtocolIE-ID ::= 127
|
||||
id-CSG-IdList ProtocolIE-ID ::= 128
|
||||
id-SONConfigurationTransferECT ProtocolIE-ID ::= 129
|
||||
id-SONConfigurationTransferMCT ProtocolIE-ID ::= 130
|
||||
id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 131
|
||||
id-MSClassmark2 ProtocolIE-ID ::= 132
|
||||
id-MSClassmark3 ProtocolIE-ID ::= 133
|
||||
id-RRC-Establishment-Cause ProtocolIE-ID ::= 134
|
||||
id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135
|
||||
id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136
|
||||
id-DefaultPagingDRX ProtocolIE-ID ::= 137
|
||||
id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138
|
||||
id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139
|
||||
id-EUTRANRoundTripDelayEstimationInfo ProtocolIE-ID ::= 140
|
||||
id-BroadcastCancelledAreaList ProtocolIE-ID ::= 141
|
||||
id-ConcurrentWarningMessageIndicator ProtocolIE-ID ::= 142
|
||||
id-Data-Forwarding-Not-Possible ProtocolIE-ID ::= 143
|
||||
id-ExtendedRepetitionPeriod ProtocolIE-ID ::= 144
|
||||
id-CellAccessMode ProtocolIE-ID ::= 145
|
||||
id-CSGMembershipStatus ProtocolIE-ID ::= 146
|
||||
id-LPPa-PDU ProtocolIE-ID ::= 147
|
||||
id-Routing-ID ProtocolIE-ID ::= 148
|
||||
id-Time-Synchronization-Info ProtocolIE-ID ::= 149
|
||||
id-PS-ServiceNotAvailable ProtocolIE-ID ::= 150
|
||||
id-RegisteredLAI ProtocolIE-ID ::= 159
|
||||
|
||||
END
|
||||
@@ -1,197 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-Containers {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
Presence,
|
||||
PrivateIE-ID,
|
||||
ProtocolExtensionID,
|
||||
ProtocolIE-ID
|
||||
FROM S1AP-CommonDataTypes
|
||||
|
||||
maxPrivateIEs,
|
||||
maxProtocolExtensions,
|
||||
maxProtocolIEs
|
||||
FROM S1AP-Constants;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PROTOCOL-IES ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PROTOCOL-IES-PAIR ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&firstCriticality Criticality,
|
||||
&FirstValue,
|
||||
&secondCriticality Criticality,
|
||||
&SecondValue,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
FIRST CRITICALITY &firstCriticality
|
||||
FIRST TYPE &FirstValue
|
||||
SECOND CRITICALITY &secondCriticality
|
||||
SECOND TYPE &SecondValue
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PROTOCOL-EXTENSION ::= CLASS {
|
||||
&id ProtocolExtensionID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Extension,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
EXTENSION &Extension
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PRIVATE-IES ::= CLASS {
|
||||
&id PrivateIE-ID,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id S1AP-PROTOCOL-IES.&id ({IEsSetParam}),
|
||||
criticality S1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value S1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol IE Pairs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
|
||||
ProtocolIE-FieldPair {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
|
||||
id S1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
|
||||
firstCriticality S1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
|
||||
firstValue S1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
|
||||
secondCriticality S1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
|
||||
secondValue S1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container Lists for Protocol IE Containers
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (lowerBound..upperBound)) OF
|
||||
ProtocolIE-SingleContainer {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (lowerBound..upperBound)) OF
|
||||
ProtocolIE-ContainerPair {{IEsSetParam}}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
|
||||
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
|
||||
ProtocolExtensionField {{ExtensionSetParam}}
|
||||
|
||||
ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
|
||||
id S1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
|
||||
criticality S1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
|
||||
extensionValue S1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::=
|
||||
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
|
||||
PrivateIE-Field {{IEsSetParam}}
|
||||
|
||||
PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id S1AP-PRIVATE-IES.&id ({IEsSetParam}),
|
||||
criticality S1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value S1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
END
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,591 +0,0 @@
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedure definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PDU-Descriptions {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)}
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
ProcedureCode
|
||||
FROM S1AP-CommonDataTypes
|
||||
|
||||
CellTrafficTrace,
|
||||
DeactivateTrace,
|
||||
DownlinkUEAssociatedLPPaTransport,
|
||||
DownlinkNASTransport,
|
||||
DownlinkNonUEAssociatedLPPaTransport,
|
||||
DownlinkS1cdma2000tunneling,
|
||||
ENBDirectInformationTransfer,
|
||||
ENBStatusTransfer,
|
||||
ENBConfigurationUpdate,
|
||||
ENBConfigurationUpdateAcknowledge,
|
||||
ENBConfigurationUpdateFailure,
|
||||
ErrorIndication,
|
||||
HandoverCancel,
|
||||
HandoverCancelAcknowledge,
|
||||
HandoverCommand,
|
||||
HandoverFailure,
|
||||
HandoverNotify,
|
||||
HandoverPreparationFailure,
|
||||
HandoverRequest,
|
||||
HandoverRequestAcknowledge,
|
||||
HandoverRequired,
|
||||
InitialContextSetupFailure,
|
||||
InitialContextSetupRequest,
|
||||
InitialContextSetupResponse,
|
||||
InitialUEMessage,
|
||||
KillRequest,
|
||||
KillResponse,
|
||||
LocationReportingControl,
|
||||
LocationReportingFailureIndication,
|
||||
LocationReport,
|
||||
MMEConfigurationUpdate,
|
||||
MMEConfigurationUpdateAcknowledge,
|
||||
MMEConfigurationUpdateFailure,
|
||||
MMEDirectInformationTransfer,
|
||||
MMEStatusTransfer,
|
||||
NASNonDeliveryIndication,
|
||||
OverloadStart,
|
||||
OverloadStop,
|
||||
Paging,
|
||||
PathSwitchRequest,
|
||||
PathSwitchRequestAcknowledge,
|
||||
PathSwitchRequestFailure,
|
||||
PrivateMessage,
|
||||
Reset,
|
||||
ResetAcknowledge,
|
||||
S1SetupFailure,
|
||||
S1SetupRequest,
|
||||
S1SetupResponse,
|
||||
E-RABModifyRequest,
|
||||
E-RABModifyResponse,
|
||||
E-RABReleaseCommand,
|
||||
E-RABReleaseResponse,
|
||||
E-RABReleaseIndication,
|
||||
E-RABSetupRequest,
|
||||
E-RABSetupResponse,
|
||||
TraceFailureIndication,
|
||||
TraceStart,
|
||||
UECapabilityInfoIndication,
|
||||
UEContextModificationFailure,
|
||||
UEContextModificationRequest,
|
||||
UEContextModificationResponse,
|
||||
UEContextReleaseCommand,
|
||||
UEContextReleaseComplete,
|
||||
UEContextReleaseRequest,
|
||||
UplinkUEAssociatedLPPaTransport,
|
||||
UplinkNASTransport,
|
||||
UplinkNonUEAssociatedLPPaTransport,
|
||||
UplinkS1cdma2000tunneling,
|
||||
WriteReplaceWarningRequest,
|
||||
WriteReplaceWarningResponse,
|
||||
ENBConfigurationTransfer,
|
||||
MMEConfigurationTransfer
|
||||
|
||||
|
||||
FROM S1AP-PDU-Contents
|
||||
|
||||
id-CellTrafficTrace,
|
||||
id-DeactivateTrace,
|
||||
id-downlinkUEAssociatedLPPaTransport,
|
||||
id-downlinkNASTransport,
|
||||
id-downlinkNonUEAssociatedLPPaTransport,
|
||||
id-DownlinkS1cdma2000tunneling,
|
||||
id-eNBStatusTransfer,
|
||||
id-ErrorIndication,
|
||||
id-HandoverCancel,
|
||||
id-HandoverNotification,
|
||||
id-HandoverPreparation,
|
||||
id-HandoverResourceAllocation,
|
||||
id-InitialContextSetup,
|
||||
id-initialUEMessage,
|
||||
id-ENBConfigurationUpdate,
|
||||
id-Kill,
|
||||
id-LocationReportingControl,
|
||||
id-LocationReportingFailureIndication,
|
||||
id-LocationReport,
|
||||
id-eNBDirectInformationTransfer,
|
||||
id-MMEConfigurationUpdate,
|
||||
id-MMEDirectInformationTransfer,
|
||||
id-MMEStatusTransfer,
|
||||
id-NASNonDeliveryIndication,
|
||||
id-OverloadStart,
|
||||
id-OverloadStop,
|
||||
id-Paging,
|
||||
id-PathSwitchRequest,
|
||||
id-PrivateMessage,
|
||||
id-Reset,
|
||||
id-S1Setup,
|
||||
id-E-RABModify,
|
||||
id-E-RABRelease,
|
||||
id-E-RABReleaseIndication,
|
||||
id-E-RABSetup,
|
||||
id-TraceFailureIndication,
|
||||
id-TraceStart,
|
||||
id-UECapabilityInfoIndication,
|
||||
id-UEContextModification,
|
||||
id-UEContextRelease,
|
||||
id-UEContextReleaseRequest,
|
||||
id-uplinkUEAssociatedLPPaTransport,
|
||||
id-uplinkNASTransport,
|
||||
id-uplinkNonUEAssociatedLPPaTransport,
|
||||
id-UplinkS1cdma2000tunneling,
|
||||
id-WriteReplaceWarning,
|
||||
id-eNBConfigurationTransfer,
|
||||
id-MMEConfigurationTransfer
|
||||
FROM S1AP-Constants;
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure Class
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-ELEMENTARY-PROCEDURE ::= CLASS {
|
||||
&InitiatingMessage ,
|
||||
&SuccessfulOutcome OPTIONAL,
|
||||
&UnsuccessfulOutcome OPTIONAL,
|
||||
&procedureCode ProcedureCode UNIQUE,
|
||||
&criticality Criticality DEFAULT ignore
|
||||
}
|
||||
WITH SYNTAX {
|
||||
INITIATING MESSAGE &InitiatingMessage
|
||||
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
|
||||
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
|
||||
PROCEDURE CODE &procedureCode
|
||||
[CRITICALITY &criticality]
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface PDU Definition
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-PDU ::= CHOICE {
|
||||
initiatingMessage InitiatingMessage,
|
||||
successfulOutcome SuccessfulOutcome,
|
||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
||||
...
|
||||
}
|
||||
|
||||
InitiatingMessage ::= SEQUENCE {
|
||||
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
SuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
UnsuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure List
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
|
||||
S1AP-ELEMENTARY-PROCEDURES-CLASS-2,
|
||||
...
|
||||
}
|
||||
|
||||
|
||||
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
handoverPreparation |
|
||||
handoverResourceAllocation |
|
||||
pathSwitchRequest |
|
||||
e-RABSetup |
|
||||
e-RABModify |
|
||||
e-RABRelease |
|
||||
initialContextSetup |
|
||||
handoverCancel |
|
||||
kill |
|
||||
reset |
|
||||
s1Setup |
|
||||
uEContextModification |
|
||||
uEContextRelease |
|
||||
eNBConfigurationUpdate |
|
||||
mMEConfigurationUpdate |
|
||||
writeReplaceWarning ,
|
||||
...
|
||||
}
|
||||
|
||||
S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
handoverNotification |
|
||||
e-RABReleaseIndication |
|
||||
paging |
|
||||
downlinkNASTransport |
|
||||
initialUEMessage |
|
||||
uplinkNASTransport |
|
||||
errorIndication |
|
||||
nASNonDeliveryIndication |
|
||||
uEContextReleaseRequest |
|
||||
downlinkS1cdma2000tunneling |
|
||||
uplinkS1cdma2000tunneling |
|
||||
uECapabilityInfoIndication |
|
||||
eNBStatusTransfer |
|
||||
mMEStatusTransfer |
|
||||
deactivateTrace |
|
||||
traceStart |
|
||||
traceFailureIndication |
|
||||
cellTrafficTrace |
|
||||
locationReportingControl |
|
||||
locationReportingFailureIndication |
|
||||
locationReport |
|
||||
overloadStart |
|
||||
overloadStop |
|
||||
eNBDirectInformationTransfer |
|
||||
mMEDirectInformationTransfer |
|
||||
eNBConfigurationTransfer |
|
||||
mMEConfigurationTransfer |
|
||||
privateMessage ,
|
||||
...,
|
||||
downlinkUEAssociatedLPPaTransport |
|
||||
uplinkUEAssociatedLPPaTransport |
|
||||
downlinkNonUEAssociatedLPPaTransport |
|
||||
uplinkNonUEAssociatedLPPaTransport
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE HandoverRequired
|
||||
SUCCESSFUL OUTCOME HandoverCommand
|
||||
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
|
||||
PROCEDURE CODE id-HandoverPreparation
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE HandoverRequest
|
||||
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
|
||||
UNSUCCESSFUL OUTCOME HandoverFailure
|
||||
PROCEDURE CODE id-HandoverResourceAllocation
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE HandoverNotify
|
||||
PROCEDURE CODE id-HandoverNotification
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PathSwitchRequest
|
||||
SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge
|
||||
UNSUCCESSFUL OUTCOME PathSwitchRequestFailure
|
||||
PROCEDURE CODE id-PathSwitchRequest
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE E-RABSetupRequest
|
||||
SUCCESSFUL OUTCOME E-RABSetupResponse
|
||||
PROCEDURE CODE id-E-RABSetup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE E-RABModifyRequest
|
||||
SUCCESSFUL OUTCOME E-RABModifyResponse
|
||||
PROCEDURE CODE id-E-RABModify
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE E-RABReleaseCommand
|
||||
SUCCESSFUL OUTCOME E-RABReleaseResponse
|
||||
PROCEDURE CODE id-E-RABRelease
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE E-RABReleaseIndication
|
||||
PROCEDURE CODE id-E-RABReleaseIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE InitialContextSetupRequest
|
||||
SUCCESSFUL OUTCOME InitialContextSetupResponse
|
||||
UNSUCCESSFUL OUTCOME InitialContextSetupFailure
|
||||
PROCEDURE CODE id-InitialContextSetup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextReleaseRequest
|
||||
PROCEDURE CODE id-UEContextReleaseRequest
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
paging S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Paging
|
||||
PROCEDURE CODE id-Paging
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DownlinkNASTransport
|
||||
PROCEDURE CODE id-downlinkNASTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE InitialUEMessage
|
||||
PROCEDURE CODE id-initialUEMessage
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UplinkNASTransport
|
||||
PROCEDURE CODE id-uplinkNASTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE NASNonDeliveryIndication
|
||||
PROCEDURE CODE id-NASNonDeliveryIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE HandoverCancel
|
||||
SUCCESSFUL OUTCOME HandoverCancelAcknowledge
|
||||
PROCEDURE CODE id-HandoverCancel
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
reset S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Reset
|
||||
SUCCESSFUL OUTCOME ResetAcknowledge
|
||||
PROCEDURE CODE id-Reset
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
errorIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ErrorIndication
|
||||
PROCEDURE CODE id-ErrorIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
s1Setup S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE S1SetupRequest
|
||||
SUCCESSFUL OUTCOME S1SetupResponse
|
||||
UNSUCCESSFUL OUTCOME S1SetupFailure
|
||||
PROCEDURE CODE id-S1Setup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ENBConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-ENBConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE MMEConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME MMEConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME MMEConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-MMEConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
downlinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DownlinkS1cdma2000tunneling
|
||||
PROCEDURE CODE id-DownlinkS1cdma2000tunneling
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uplinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UplinkS1cdma2000tunneling
|
||||
PROCEDURE CODE id-UplinkS1cdma2000tunneling
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextModificationRequest
|
||||
SUCCESSFUL OUTCOME UEContextModificationResponse
|
||||
UNSUCCESSFUL OUTCOME UEContextModificationFailure
|
||||
|
||||
PROCEDURE CODE id-UEContextModification
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UECapabilityInfoIndication
|
||||
PROCEDURE CODE id-UECapabilityInfoIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UEContextReleaseCommand
|
||||
SUCCESSFUL OUTCOME UEContextReleaseComplete
|
||||
PROCEDURE CODE id-UEContextRelease
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ENBStatusTransfer
|
||||
PROCEDURE CODE id-eNBStatusTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE MMEStatusTransfer
|
||||
PROCEDURE CODE id-MMEStatusTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DeactivateTrace
|
||||
PROCEDURE CODE id-DeactivateTrace
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
traceStart S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE TraceStart
|
||||
PROCEDURE CODE id-TraceStart
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE TraceFailureIndication
|
||||
PROCEDURE CODE id-TraceFailureIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={
|
||||
INITIATING MESSAGE CellTrafficTrace
|
||||
PROCEDURE CODE id-CellTrafficTrace
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE LocationReportingControl
|
||||
PROCEDURE CODE id-LocationReportingControl
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE LocationReportingFailureIndication
|
||||
PROCEDURE CODE id-LocationReportingFailureIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
locationReport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE LocationReport
|
||||
PROCEDURE CODE id-LocationReport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
overloadStart S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE OverloadStart
|
||||
PROCEDURE CODE id-OverloadStart
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
overloadStop S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE OverloadStop
|
||||
PROCEDURE CODE id-OverloadStop
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE WriteReplaceWarningRequest
|
||||
SUCCESSFUL OUTCOME WriteReplaceWarningResponse
|
||||
PROCEDURE CODE id-WriteReplaceWarning
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ENBDirectInformationTransfer
|
||||
PROCEDURE CODE id-eNBDirectInformationTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE MMEDirectInformationTransfer
|
||||
PROCEDURE CODE id-MMEDirectInformationTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ENBConfigurationTransfer
|
||||
PROCEDURE CODE id-eNBConfigurationTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE MMEConfigurationTransfer
|
||||
PROCEDURE CODE id-MMEConfigurationTransfer
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
privateMessage S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PrivateMessage
|
||||
PROCEDURE CODE id-PrivateMessage
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
kill S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE KillRequest
|
||||
SUCCESSFUL OUTCOME KillResponse
|
||||
PROCEDURE CODE id-Kill
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DownlinkUEAssociatedLPPaTransport
|
||||
PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UplinkUEAssociatedLPPaTransport
|
||||
PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DownlinkNonUEAssociatedLPPaTransport
|
||||
PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE UplinkNonUEAssociatedLPPaTransport
|
||||
PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
END
|
||||
@@ -1,413 +0,0 @@
|
||||
S1AP-PDU {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
eps-Access (21) modules (3) s1ap (1) version1 (1)
|
||||
}
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
ProcedureCode,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM S1AP-CommonDataTypes
|
||||
|
||||
maxProtocolIEs
|
||||
|
||||
FROM S1AP-Constants;
|
||||
|
||||
S1AP-PDU ::= CHOICE {
|
||||
initiatingMessage InitiatingMessage,
|
||||
successfulOutcome SuccessfulOutcome,
|
||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
||||
...
|
||||
}
|
||||
|
||||
InitiatingMessage ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
SuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
UnsuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode ProcedureCode,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
HandoverRequired ::= SEQUENCE {
|
||||
handoverRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCommand ::= SEQUENCE {
|
||||
handoverCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverPreparationFailure ::= SEQUENCE {
|
||||
handoverPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverRequest ::= SEQUENCE {
|
||||
handoverRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverRequestAcknowledge ::= SEQUENCE {
|
||||
handoverRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverFailure ::= SEQUENCE {
|
||||
handoverFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverNotify ::= SEQUENCE {
|
||||
handoverNotify-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequest ::= SEQUENCE {
|
||||
pathSwitchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequestAcknowledge ::= SEQUENCE {
|
||||
pathSwitchRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PathSwitchRequestFailure ::= SEQUENCE {
|
||||
pathSwitchRequestFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABSetupRequest ::= SEQUENCE {
|
||||
e-RABSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABSetupResponse ::= SEQUENCE {
|
||||
e-RABSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABModifyRequest ::= SEQUENCE {
|
||||
e-RABModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABModifyResponse ::= SEQUENCE {
|
||||
e-RABModifyResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseIndication ::= SEQUENCE {
|
||||
e-RABReleaseIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseCommand ::= SEQUENCE {
|
||||
e-RABReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
E-RABReleaseResponse ::= SEQUENCE {
|
||||
e-RABReleaseResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupRequest ::= SEQUENCE {
|
||||
initialContextSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupResponse ::= SEQUENCE {
|
||||
initialContextSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialContextSetupFailure ::= SEQUENCE {
|
||||
initialContextSetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseRequest ::= SEQUENCE {
|
||||
ueContextReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
Paging ::= SEQUENCE {
|
||||
paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkNASTransport ::= SEQUENCE {
|
||||
downlinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
InitialUEMessage ::= SEQUENCE {
|
||||
initialUEMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkNASTransport ::= SEQUENCE {
|
||||
uplinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
NASNonDeliveryIndication ::= SEQUENCE {
|
||||
nasNonDeliveryIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCancel ::= SEQUENCE {
|
||||
handoverCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
HandoverCancelAcknowledge ::= SEQUENCE {
|
||||
handoverCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
Reset ::= SEQUENCE {
|
||||
reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ResetAcknowledge ::= SEQUENCE {
|
||||
resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupResponse ::= SEQUENCE {
|
||||
s1SetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupRequest ::= SEQUENCE {
|
||||
s1SetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
S1SetupFailure ::= SEQUENCE
|
||||
{
|
||||
s1SetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ErrorIndication ::= SEQUENCE {
|
||||
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdate ::= SEQUENCE {
|
||||
eNBConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||
eNBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationUpdateFailure ::= SEQUENCE {
|
||||
eNBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdate ::= SEQUENCE {
|
||||
mmeConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||
mmeConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationUpdateFailure ::= SEQUENCE {
|
||||
mmeConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkS1cdma2000tunneling ::= SEQUENCE {
|
||||
downlinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkS1cdma2000tunneling ::= SEQUENCE {
|
||||
uplinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationRequest ::= SEQUENCE {
|
||||
ueContextModificationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationResponse ::= SEQUENCE {
|
||||
ueContextModificationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextModificationFailure ::= SEQUENCE {
|
||||
ueContextModificationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UECapabilityInfoIndication ::= SEQUENCE {
|
||||
ueCapabilityInfoIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseCommand ::= SEQUENCE {
|
||||
ueContextReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UEContextReleaseComplete ::= SEQUENCE {
|
||||
ueContextReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBStatusTransfer ::= SEQUENCE {
|
||||
eNBStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEStatusTransfer ::= SEQUENCE {
|
||||
mmeStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DeactivateTrace ::= SEQUENCE {
|
||||
deactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
TraceStart ::= SEQUENCE {
|
||||
traceStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
TraceFailureIndication ::= SEQUENCE {
|
||||
traceFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
CellTrafficTrace ::= SEQUENCE {
|
||||
cellTrafficTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReportingControl ::= SEQUENCE {
|
||||
locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReportingFailureIndication ::= SEQUENCE {
|
||||
locationReportingFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
LocationReport ::= SEQUENCE {
|
||||
locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
OverloadStart ::= SEQUENCE {
|
||||
overloadStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
OverloadStop ::= SEQUENCE {
|
||||
overloadStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
WriteReplaceWarningRequest ::= SEQUENCE {
|
||||
writeReplaceWarningRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
WriteReplaceWarningResponse ::= SEQUENCE {
|
||||
writeReplaceWarningResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBDirectInformationTransfer ::= SEQUENCE {
|
||||
eNBDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEDirectInformationTransfer ::= SEQUENCE {
|
||||
mmeDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
ENBConfigurationTransfer ::= SEQUENCE {
|
||||
eNBConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
MMEConfigurationTransfer ::= SEQUENCE {
|
||||
mmeConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
PrivateMessage ::= SEQUENCE {
|
||||
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
KillRequest ::= SEQUENCE {
|
||||
killRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
KillResponse ::= SEQUENCE {
|
||||
killResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||
downlinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||
uplinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||
downlinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||
uplinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
||||
...
|
||||
}
|
||||
|
||||
IE ::= SEQUENCE {
|
||||
id ProtocolIE-ID,
|
||||
criticality Criticality,
|
||||
value ANY
|
||||
}
|
||||
|
||||
END
|
||||
@@ -1,15 +0,0 @@
|
||||
ASN1 message from S1AP TS 36.413-8a0
|
||||
|
||||
To successfully parse messages, the asn1c util should be patched with the patch provided (asn1cpatch.p0).
|
||||
To do so:
|
||||
1) Get the last revision of asn1c: svn co https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk asn1c
|
||||
2) Go to asn1c directory
|
||||
3) patch -p0 asn1cpatch.p0
|
||||
4) ./configure
|
||||
5) make
|
||||
6) make install
|
||||
|
||||
Aligned PER support is now included when parsing and generating asn1 code.
|
||||
|
||||
To generate S1AP ASN1 descriptions:
|
||||
Files are automatically generated when changes are made on ASN1 files via Make build system.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,513 +0,0 @@
|
||||
import re, os, sys, string
|
||||
import datetime
|
||||
import getopt
|
||||
import getpass
|
||||
|
||||
version = "0.5"
|
||||
|
||||
lines = ""
|
||||
iesDefs = {}
|
||||
ieofielist = {}
|
||||
outdir = './'
|
||||
|
||||
filenames = []
|
||||
verbosity = 0
|
||||
prefix = ""
|
||||
|
||||
FAIL = '\033[91m'
|
||||
WARN = '\033[93m'
|
||||
ENDC = '\033[0m'
|
||||
|
||||
fileprefix = ""
|
||||
|
||||
def printFail(string):
|
||||
sys.stderr.write(FAIL + string + ENDC + "\n")
|
||||
|
||||
def printWarning(string):
|
||||
print WARN + string + ENDC
|
||||
|
||||
def printDebug(string):
|
||||
if verbosity > 0:
|
||||
print string
|
||||
|
||||
def outputHeaderToFile(f, filename):
|
||||
now = datetime.datetime.now()
|
||||
f.write("""/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
""")
|
||||
f.write("/*******************************************************************************\n")
|
||||
f.write(" * This file had been created by asn1tostruct.py script v%s\n" % (version))
|
||||
f.write(" * Please do not modify this file but regenerate it via script.\n")
|
||||
f.write(" * Created on: %s by %s\n * from %s\n" % (str(now), getpass.getuser(), filenames))
|
||||
f.write(" ******************************************************************************/\n")
|
||||
|
||||
def lowerFirstCamelWord(word):
|
||||
""" puts the first word in a CamelCase Word in lowercase.
|
||||
|
||||
I.e. CustomerID becomes customerID, XMLInfoTest becomes xmlInfoTest
|
||||
"""
|
||||
newstr = ''
|
||||
swapped = word.swapcase()
|
||||
idx = 0
|
||||
|
||||
# if it's all-caps, return an all-lowered version
|
||||
lowered = word.lower()
|
||||
|
||||
if swapped == lowered:
|
||||
return lowered
|
||||
|
||||
for c in swapped:
|
||||
if c in string.lowercase:
|
||||
newstr += c
|
||||
idx += 1
|
||||
else:
|
||||
break
|
||||
if idx < 2:
|
||||
newstr += word[idx:]
|
||||
else:
|
||||
newstr = newstr[:-1]+ word[idx-1:]
|
||||
|
||||
return newstr
|
||||
|
||||
def usage():
|
||||
print "Python parser for asn1 v%s" % (version)
|
||||
print "Usage: python asn1tostruct.py [options]"
|
||||
print "Available options:"
|
||||
print "-d Enable script debug"
|
||||
print "-f [file] Input file to parse"
|
||||
print "-o [dir] Output files to given directory"
|
||||
print "-h Print this help and return"
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "df:ho:", ["debug", "file", "help", "outdir"])
|
||||
except getopt.GetoptError as err:
|
||||
# print help information and exit:
|
||||
usage()
|
||||
sys.exit(2)
|
||||
|
||||
for o, a in opts:
|
||||
if o in ("-f", "--file"):
|
||||
filenames.append(a)
|
||||
if o in ("-d", "--debug"):
|
||||
verbosity = 1
|
||||
if o in ("-o", "--outdir"):
|
||||
outdir = a
|
||||
if outdir.rfind('/') != len(outdir):
|
||||
outdir += '/'
|
||||
if o in ("-h", "--help"):
|
||||
usage()
|
||||
sys.exit(2)
|
||||
|
||||
for filename in filenames:
|
||||
file = open(filename, 'r')
|
||||
for line in file:
|
||||
# Removing any comment
|
||||
if line.find('--') >= 0:
|
||||
line = line[:line.find('--')]
|
||||
# Removing any carriage return
|
||||
lines += re.sub('\r', '', line)
|
||||
|
||||
for m in re.findall(r'([a-zA-Z0-9-]+)\s*::=\s+SEQUENCE\s+\(\s*SIZE\s*\(\s*\d+\s*\.\.\s*[0-9a-zA-Z-]+\s*\)\s*\)\s*OF\s+[a-zA-Z-]+\s*\{\s*\{\s*([0-9a-zA-Z-]+)\s*\}\s*\}', lines, re.MULTILINE):
|
||||
ieofielist[m[0]] = m[1]
|
||||
for m in re.findall(r'([a-zA-Z0-9-]+)\s*::=\s+E-RAB-IE-ContainerList\s*\{\s*\{\s*([a-zA-Z0-9-]+)\s*\}\s*\}', lines, re.MULTILINE):
|
||||
ieofielist[m[0]] = m[1]
|
||||
|
||||
for i in re.findall(r'([a-zA-Z0-9-]+)\s+([A-Z0-9-]+)\s*::=\s*\{\s+([\,\|\{\}\t\n\.{3}\ \-a-zA-Z0-9]+)\s+}\n', lines, re.MULTILINE):
|
||||
ies = []
|
||||
maxLength = 0
|
||||
# TODO: handle extensions
|
||||
if i[1].find('EXTENSION') >= 0:
|
||||
continue
|
||||
if fileprefix == "":
|
||||
fileprefix = i[1][:i[1].find('-')].lower()
|
||||
for j in re.findall(r'\s*\{\s*([a-zA-Z0-9-\ \t]+)\s*\}\s*[\|,]*', i[2], re.MULTILINE):
|
||||
for k in re.findall(r'ID\s*([a-zA-Z0-9\-]+)\s*CRITICALITY\s*([a-zA-Z0-9\-]+)\s+[A-Z]+\s+([a-zA-Z0-9\-]+)\s*PRESENCE\s*([a-zA-Z0-9\-]+)', j, re.MULTILINE):
|
||||
printDebug("Got new ie for message " + i[0] + ": " + str(k))
|
||||
if len(k[2]) > maxLength:
|
||||
maxLength = len(k[2])
|
||||
ies.append(k)
|
||||
|
||||
if len(ies) > 0:
|
||||
iesDefs[i[0]] = { "length": maxLength, "ies": ies}
|
||||
else:
|
||||
printWarning("Didn't find any information element for message: " + i[0])
|
||||
|
||||
if len(iesDefs) == 0:
|
||||
printFail("No Information Element parsed, exiting")
|
||||
sys.exit(0)
|
||||
|
||||
f = open(outdir + fileprefix + '_ies_defs.h', 'w')
|
||||
outputHeaderToFile(f, filename)
|
||||
f.write("#include \"%s_common.h\"\n\n" % (fileprefix))
|
||||
f.write("#ifndef %s_IES_DEFS_H_\n#define %s_IES_DEFS_H_\n\n" % (fileprefix.upper(), fileprefix.upper()))
|
||||
|
||||
for key in iesDefs:
|
||||
|
||||
if key not in ieofielist.values():
|
||||
continue
|
||||
|
||||
for (i, j) in ieofielist.items():
|
||||
if j == key:
|
||||
break
|
||||
|
||||
f.write("typedef struct %sIEs_s {\n" % (re.sub('-', '_', i)))
|
||||
f.write(" A_SEQUENCE_OF(struct %s_s) %s;\n" % (re.sub('IEs', '', re.sub('-', '_', ieofielist[i])), lowerFirstCamelWord(re.sub('IEs', '', re.sub('-', '_', ieofielist[i])))))
|
||||
f.write("} %sIEs_t;\n\n" % (re.sub('-', '_', i)))
|
||||
|
||||
for key in iesDefs:
|
||||
keyupperunderscore = re.sub('-', '_', key.upper())
|
||||
keylowerunderscore = re.sub('-', '_', key.lower())
|
||||
shift = 0
|
||||
|
||||
if len(iesDefs[key]["ies"]) == 0:
|
||||
continue
|
||||
|
||||
# Presence mask
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
ieupperunderscore = re.sub('-', '_', ie[2].upper())
|
||||
if ie[3] == "optional" or ie[3] == "conditional":
|
||||
f.write("#define {0:<{pad}} {1}\n".format("%s_%s_PRESENT" % (keyupperunderscore, ieupperunderscore), "(1 << %d)" % shift,
|
||||
pad=iesDefs[key]["length"] + len(keyupperunderscore) + 9))
|
||||
shift += 1
|
||||
if (shift > 0):
|
||||
f.write("\n")
|
||||
|
||||
f.write("typedef struct %s_s {\n" % (re.sub('-', '_', key)))
|
||||
if (shift > 0):
|
||||
f.write(" {0:<{pad}} {1};\n".format("uint16_t", "presenceMask", pad=iesDefs[key]["length"] + 2))
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
ieunderscore = re.sub('-', '_', ie[2])
|
||||
iename = re.sub('id-', '', ie[0])
|
||||
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
||||
if ie[2] in ieofielist:
|
||||
f.write(" %sIEs_t %s;" % (re.sub('-', '_', ie[2]), ienameunderscore))
|
||||
else:
|
||||
f.write(" {0:<{pad}} {1};".format("%s_t" % ieunderscore, ienameunderscore, pad=iesDefs[key]["length"] + 2))
|
||||
if ie[3] == "optional":
|
||||
f.write(" ///< Optional field")
|
||||
elif ie[3] == "conditional":
|
||||
f.write(" ///< Conditional field")
|
||||
f.write("\n")
|
||||
|
||||
f.write("} %s_t;\n\n" % (re.sub('-', '_', key)))
|
||||
|
||||
f.write("typedef struct %s_message_s {\n" % (fileprefix))
|
||||
f.write(" uint8_t procedureCode;\n")
|
||||
f.write(" uint8_t criticality;\n")
|
||||
f.write(" uint8_t direction;\n")
|
||||
f.write(" union {\n")
|
||||
|
||||
messageList = iesDefs.keys()
|
||||
messageList.sort()
|
||||
for message in messageList:
|
||||
if message in ieofielist.values():
|
||||
continue
|
||||
if len(iesDefs[message]["ies"]) == 0:
|
||||
continue
|
||||
f.write(" %s_t %s;\n" % (re.sub('-', '_', message), lowerFirstCamelWord(re.sub('-', '_', message))))
|
||||
f.write(" } msg;\n")
|
||||
f.write("} %s_message;\n\n" % (fileprefix))
|
||||
|
||||
for key in iesDefs:
|
||||
if key in ieofielist.values():
|
||||
continue
|
||||
structName = re.sub('ies', '', key)
|
||||
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
|
||||
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
|
||||
keylowerunderscore = re.sub('-', '_', key.lower())
|
||||
firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
|
||||
f.write("/** \\brief Decode function for %s ies.\n" % (key))
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" * \\param %s Pointer to ASN1 structure in which data will be stored\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
f.write(" * \\param any_p Pointer to the ANY value to decode.\n")
|
||||
f.write(" **/\n")
|
||||
f.write("int %s_decode_%s(\n" % (fileprefix, keylowerunderscore))
|
||||
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" %s_t *%s,\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
f.write(" ANY_t *any_p);\n\n")
|
||||
|
||||
if len(iesDefs[key]["ies"]) == 0:
|
||||
continue
|
||||
|
||||
f.write("/** \\brief Encode function for %s ies.\n" % (key))
|
||||
f.write(" * \\param %s Pointer to the ASN1 structure.\n" % (firstlower))
|
||||
f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
f.write(" **/\n")
|
||||
f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
|
||||
f.write(" %s_t *%s,\n" % (asn1cStruct, firstlower))
|
||||
f.write(" %s_t *%s);\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
|
||||
for key in iesDefs:
|
||||
if key not in ieofielist.values():
|
||||
continue
|
||||
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))
|
||||
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
|
||||
firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
|
||||
f.write("/** \\brief Encode function for %s ies.\n" % (key))
|
||||
f.write(" * \\param %s Pointer to the ASN1 structure.\n" % (firstlower))
|
||||
f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
f.write(" **/\n")
|
||||
f.write("int %s_encode_%s(\n" % (fileprefix, firstlower.lower()))
|
||||
f.write(" %s_t *%s,\n" % (asn1cStruct, firstlower))
|
||||
f.write(" %sIEs_t *%sIEs);\n\n" % (asn1cStruct, firstlower))
|
||||
f.write("/** \\brief Decode function for %s ies.\n" % (key))
|
||||
f.write(" * \\param any_p Pointer to the ANY value to decode.\n")
|
||||
f.write(" * \\param callback Callback function called when any_p is successfully decoded.\n")
|
||||
f.write(" **/\n")
|
||||
f.write("int %s_decode_%s(\n" % (fileprefix, firstlower.lower()))
|
||||
f.write(" %sIEs_t *%sIEs,\n" % (asn1cStruct, firstlower))
|
||||
f.write(" %s_t *%s);\n\n" % (asn1cStruct, lowerFirstCamelWord(asn1cStruct)))
|
||||
f.write("#endif /* %s_IES_DEFS_H_ */\n\n" % (fileprefix.upper()))
|
||||
|
||||
#Generate Decode functions
|
||||
f = open(outdir + fileprefix + '_decoder.c', 'w')
|
||||
outputHeaderToFile(f, filename)
|
||||
f.write("#include \"%s_common.h\"\n#include \"%s_ies_defs.h\"\n\n" % (fileprefix, fileprefix))
|
||||
for key in iesDefs:
|
||||
if key in ieofielist.values():
|
||||
continue
|
||||
structName = re.sub('ies', '', key)
|
||||
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))
|
||||
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
|
||||
ielistname = re.sub('UE', 'ue', asn1cStruct)
|
||||
ielistnamefirstlower = ielistname[:1].lower() + ielistname[1:]
|
||||
asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]
|
||||
keyName = re.sub('-', '_', key)
|
||||
keyupperunderscore = keyName.upper()
|
||||
firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
|
||||
|
||||
iesaccess = ""
|
||||
if key not in ieofielist.values():
|
||||
iesaccess = "%s_ies." % (firstlower)
|
||||
|
||||
f.write("int %s_decode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" %s_t *%s,\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
f.write(" ANY_t *any_p) {\n\n")
|
||||
|
||||
f.write(" %s_t %s;\n %s_t *%s_p = &%s;\n" % (asn1cStruct, asn1cStructfirstlower, asn1cStruct, asn1cStructfirstlower, asn1cStructfirstlower))
|
||||
f.write(" int i, decoded = 0;\n")
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" int tempDecoded = 0;\n")
|
||||
|
||||
f.write(" assert(any_p != NULL);\n")
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" assert(%s != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
|
||||
f.write(" %s_DEBUG(\"Decoding message %s (%%s:%%d)\\n\", __FILE__, __LINE__);\n\n" % (fileprefix.upper(), re.sub('-', '_', keyName)))
|
||||
f.write(" ANY_to_type_aper(any_p, &asn_DEF_%s, (void**)&%s_p);\n\n" % (asn1cStruct, asn1cStructfirstlower))
|
||||
f.write(" for (i = 0; i < %s_p->%slist.count; i++) {\n" % (asn1cStructfirstlower, iesaccess))
|
||||
f.write(" IE_t *ie_p;\n")
|
||||
f.write(" ie_p = %s_p->%slist.array[i];\n" % (asn1cStructfirstlower, iesaccess))
|
||||
f.write(" switch(ie_p->id) {\n")
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
iename = re.sub('id-', '', ie[0])
|
||||
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
||||
ienameunderscorefirstlower = lowerFirstCamelWord(ienameunderscore)
|
||||
ietypesubst = re.sub('-', '', ie[2])
|
||||
ietypeunderscore = re.sub('-', '_', ie[2])
|
||||
ieupperunderscore = re.sub('-', '_', ie[2]).upper()
|
||||
if ie[3] == "optional":
|
||||
f.write(" /* Optional field */\n")
|
||||
elif ie[3] == "conditional":
|
||||
f.write(" /* Conditional field */\n")
|
||||
f.write(" case ProtocolIE_ID_%s:\n" % (re.sub('-', '_', ie[0])))
|
||||
f.write(" {\n")
|
||||
f.write(" %s_t %s;\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
f.write(" %s_t *%s_p = &%s;\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst), lowerFirstCamelWord(ietypesubst)))
|
||||
if ie[3] != "mandatory":
|
||||
f.write(" %s->presenceMask |= %s_%s_PRESENT;\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
|
||||
f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
f.write(" if (tempDecoded < 0) {\n")
|
||||
f.write(" %s_DEBUG(\"Decoding of IE %s failed\\n\");\n" % (fileprefix.upper(), ienameunderscore))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" decoded += tempDecoded;\n")
|
||||
f.write(" if (asn1_xer_print)\n")
|
||||
f.write(" xer_fprint(stdout, &asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
if ie[2] in ieofielist.keys():
|
||||
f.write(" if (%s_decode_%s(&%s->%s, %s_p) < 0)\n" % (fileprefix, ietypeunderscore.lower(), lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
f.write(" %s_DEBUG(\"Decoding of encapsulated IE %s failed\\n\");\n" % (fileprefix.upper(), lowerFirstCamelWord(ietypesubst)))
|
||||
else:
|
||||
f.write(" memcpy(&%s->%s, %s_p, sizeof(%s_t));\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst), ietypeunderscore))
|
||||
f.write(" } break;\n")
|
||||
f.write(" default:\n")
|
||||
f.write(" %s_DEBUG(\"Unknown protocol IE id (%%d) for message %s\\n\", (int)ie_p->id);\n" % (fileprefix.upper(), re.sub('-', '_', structName.lower())))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" }\n")
|
||||
f.write(" return decoded;\n")
|
||||
f.write("}\n\n")
|
||||
|
||||
for key in iesDefs:
|
||||
if key not in ieofielist.values():
|
||||
continue
|
||||
|
||||
keyname = re.sub('IEs', '', re.sub('Item', 'List', key))
|
||||
|
||||
f.write("int %s_decode_%s(\n" % (fileprefix, re.sub('-', '_', keyname).lower()))
|
||||
f.write(" %sIEs_t *%sIEs,\n" % (re.sub('-', '_', keyname), lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||
f.write(" %s_t *%s) {\n\n" % (re.sub('-', '_', keyname), lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||
f.write(" int i, decoded = 0;\n")
|
||||
f.write(" int tempDecoded = 0;\n\n")
|
||||
f.write(" for (i = 0; i < %s->list.count; i++) {\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||
f.write(" IE_t *ie_p = %s->list.array[i];\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||
f.write(" switch (ie_p->id) {\n")
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
iename = re.sub('id-', '', ie[0])
|
||||
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
||||
f.write(" case ProtocolIE_ID_%s:\n" % (re.sub('-', '_', ie[0])))
|
||||
f.write(" {\n")
|
||||
f.write(" %s_t *%s_p;\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||
f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||
f.write(" if (tempDecoded < 0) {\n")
|
||||
f.write(" %s_DEBUG(\"Decoding of IE %s for message %s failed\\n\");\n" % (fileprefix.upper(), ienameunderscore, re.sub('-', '_', keyname)))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" decoded += tempDecoded;\n")
|
||||
f.write(" if (asn1_xer_print)\n")
|
||||
f.write(" xer_fprint(stdout, &asn_DEF_%s, %s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||
f.write(" ASN_SEQUENCE_ADD(&%sIEs->%s, %s_p);\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname)),
|
||||
re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key))), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||
f.write(" } break;\n")
|
||||
f.write(" default:\n")
|
||||
f.write(" %s_DEBUG(\"Unknown protocol IE id (%%d) for message %s\\n\", (int)ie_p->id);\n" % (fileprefix.upper(), re.sub('-', '_', structName.lower())))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" }\n")
|
||||
f.write(" return decoded;\n")
|
||||
f.write("}\n\n")
|
||||
|
||||
|
||||
#Generate IES Encode functions
|
||||
f = open(outdir + fileprefix + '_encoder.c', 'w')
|
||||
outputHeaderToFile(f,filename)
|
||||
f.write("#include \"%s_common.h\"\n" % (fileprefix))
|
||||
f.write("#include \"%s_ies_defs.h\"\n\n" % (fileprefix))
|
||||
for key in iesDefs:
|
||||
if key in ieofielist.values():
|
||||
continue
|
||||
|
||||
structName = re.sub('ies', '', key)
|
||||
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))
|
||||
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
|
||||
asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]
|
||||
firstwordlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
|
||||
|
||||
iesaccess = ""
|
||||
if key not in ieofielist.values():
|
||||
iesaccess = "%s_ies." % (firstwordlower)
|
||||
|
||||
keyName = re.sub('-', '_', key)
|
||||
keyupperunderscore = keyName.upper()
|
||||
# No IE to encode...
|
||||
if len(iesDefs[key]["ies"]) == 0:
|
||||
continue
|
||||
|
||||
f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
|
||||
f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
|
||||
f.write(" %s_t *%s) {\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
|
||||
f.write(" IE_t *ie;\n\n")
|
||||
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
iename = re.sub('-', '_', re.sub('id-', '', ie[0]))
|
||||
ienameunderscore = re.sub('-', '_', iename)
|
||||
ienamefirstwordlower = lowerFirstCamelWord(iename)
|
||||
ieupperunderscore = re.sub('-', '_', ie[2]).upper()
|
||||
ietypeunderscore = re.sub('-', '_', ie[2])
|
||||
if ie[3] != "mandatory":
|
||||
if ie[3] == "optional":
|
||||
f.write(" /* Optional field */\n")
|
||||
elif ie[3] == "conditional":
|
||||
f.write(" /* Conditional field */\n")
|
||||
f.write(" if ((%s->presenceMask & %s_%s_PRESENT)\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
|
||||
f.write(" == %s_%s_PRESENT) {\n" % (keyupperunderscore, ieupperunderscore))
|
||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||
f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n" % (firstwordlower, iesaccess))
|
||||
f.write(" }\n\n")
|
||||
else:
|
||||
if ie[2] in ieofielist.keys():
|
||||
f.write(" %s_t %s;\n\n" % (ietypeunderscore, ienamefirstwordlower))
|
||||
f.write(" memset(&%s, 0, sizeof(%s_t));\n" % (ienamefirstwordlower, ietypeunderscore))
|
||||
f.write("\n")
|
||||
f.write(" if (%s_encode_%s(&%s, &%s->%s) < 0) return -1;\n" % (fileprefix, ietypeunderscore.lower(), ienamefirstwordlower, lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||
if ie[2] in ieofielist.keys():
|
||||
f.write(" &%s)) == NULL) {\n" % (ienamefirstwordlower))
|
||||
else:
|
||||
f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n\n" % (firstwordlower, iesaccess))
|
||||
|
||||
f.write(" return 0;\n")
|
||||
f.write("}\n\n")
|
||||
|
||||
for (key, value) in iesDefs.items():
|
||||
if key not in ieofielist.values():
|
||||
continue
|
||||
|
||||
ie = value["ies"][0]
|
||||
ietypeunderscore = re.sub('-', '_', ie[2])
|
||||
asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
|
||||
asn1cStruct = re.sub('Item', 'List', asn1cStruct)
|
||||
firstwordlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
|
||||
|
||||
for (i, j) in ieofielist.items():
|
||||
if j == key:
|
||||
break
|
||||
f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', i).lower()))
|
||||
f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
|
||||
f.write(" %sIEs_t *%sIEs) {\n\n" % (re.sub('-', '_', i), lowerFirstCamelWord(re.sub('-', '_', i))))
|
||||
f.write(" int i;\n")
|
||||
|
||||
f.write(" IE_t *ie;\n\n")
|
||||
|
||||
f.write(" for (i = 0; i < %sIEs->%s.count; i++) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||
f.write(" %sIEs->%s.array[i])) == NULL) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
||||
f.write(" return -1;\n")
|
||||
f.write(" }\n")
|
||||
f.write(" ASN_SEQUENCE_ADD(&%s->list, ie);\n" % (firstwordlower))
|
||||
f.write(" }\n")
|
||||
f.write(" return 0;\n")
|
||||
f.write("}\n\n")
|
||||
@@ -1,753 +0,0 @@
|
||||
SUBDIRS= ASN1/ .
|
||||
ASN_MODULEdir=.
|
||||
libs1apmessagesdir=.
|
||||
|
||||
ASN_MODULE_SOURCES= \
|
||||
Criticality.c \
|
||||
Presence.c \
|
||||
PrivateIE-ID.c \
|
||||
ProcedureCode.c \
|
||||
ProtocolExtensionID.c \
|
||||
ProtocolIE-ID.c \
|
||||
TriggeringMessage.c \
|
||||
IE-Extensions.c \
|
||||
AllocationAndRetentionPriority.c \
|
||||
Bearers-SubjectToStatusTransfer-List.c \
|
||||
Bearers-SubjectToStatusTransfer-Item.c \
|
||||
BitRate.c \
|
||||
BPLMNs.c \
|
||||
BroadcastCompletedAreaList.c \
|
||||
Cause.c \
|
||||
CauseMisc.c \
|
||||
CauseProtocol.c \
|
||||
CauseRadioNetwork.c \
|
||||
CauseTransport.c \
|
||||
CauseNas.c \
|
||||
CellIdentity.c \
|
||||
CellID-Broadcast.c \
|
||||
CellID-Broadcast-Item.c \
|
||||
Cdma2000PDU.c \
|
||||
Cdma2000RATType.c \
|
||||
Cdma2000SectorID.c \
|
||||
Cdma2000HOStatus.c \
|
||||
Cdma2000HORequiredIndication.c \
|
||||
Cdma2000OneXSRVCCInfo.c \
|
||||
Cdma2000OneXMEID.c \
|
||||
Cdma2000OneXMSI.c \
|
||||
Cdma2000OneXPilot.c \
|
||||
Cdma2000OneXRAND.c \
|
||||
Cell-Size.c \
|
||||
CellType.c \
|
||||
CGI.c \
|
||||
CI.c \
|
||||
CNDomain.c \
|
||||
CSFallbackIndicator.c \
|
||||
CSG-Id.c \
|
||||
CSG-IdList.c \
|
||||
CSG-IdList-Item.c \
|
||||
COUNTvalue.c \
|
||||
CriticalityDiagnostics.c \
|
||||
CriticalityDiagnostics-IE-List.c \
|
||||
CriticalityDiagnostics-IE-Item.c \
|
||||
DataCodingScheme.c \
|
||||
DL-Forwarding.c \
|
||||
Direct-Forwarding-Path-Availability.c \
|
||||
E-RABToBeModifiedListBearerModReq.c \
|
||||
E-RABToBeModifiedItemBearerModReq.c \
|
||||
E-RABReleaseListBearerRelComp.c \
|
||||
E-RABReleaseItemBearerRelComp.c \
|
||||
E-RABDataForwardingList.c \
|
||||
E-RABDataForwardingItem.c \
|
||||
E-RABToBeSetupListCtxtSUReq.c \
|
||||
E-RABToBeSetupItemCtxtSUReq.c \
|
||||
E-RABSetupListBearerSURes.c \
|
||||
E-RABSetupItemBearerSURes.c \
|
||||
E-RABFailedtoSetupListHOReqAck.c \
|
||||
E-RABFailedToSetupItemHOReqAck.c \
|
||||
E-RABToBeSetupListBearerSUReq.c \
|
||||
E-RABToBeSetupItemBearerSUReq.c \
|
||||
E-RABAdmittedList.c \
|
||||
E-RABAdmittedItem.c \
|
||||
E-RABToBeSwitchedDLList.c \
|
||||
E-RABToBeSwitchedDLItem.c \
|
||||
E-RABToBeSwitchedULList.c \
|
||||
E-RABToBeSwitchedULItem.c \
|
||||
E-RABModifyListBearerModRes.c \
|
||||
E-RABModifyItemBearerModRes.c \
|
||||
E-RABSetupListCtxtSURes.c \
|
||||
E-RABSetupItemCtxtSURes.c \
|
||||
E-RABToBeSetupListHOReq.c \
|
||||
E-RABToBeSetupItemHOReq.c \
|
||||
ECGIList.c \
|
||||
EmergencyAreaIDList.c \
|
||||
EmergencyAreaID.c \
|
||||
EmergencyAreaID-Broadcast.c \
|
||||
EmergencyAreaID-Broadcast-Item.c \
|
||||
CompletedCellinEAI.c \
|
||||
CompletedCellinEAI-Item.c \
|
||||
ENB-ID.c \
|
||||
GERAN-Cell-ID.c \
|
||||
Global-ENB-ID.c \
|
||||
ENB-StatusTransfer-TransparentContainer.c \
|
||||
ENB-UE-S1AP-ID.c \
|
||||
ENBname.c \
|
||||
ENBX2TLAs.c \
|
||||
EncryptionAlgorithms.c \
|
||||
EPLMNs.c \
|
||||
EventType.c \
|
||||
E-RAB-ID.c \
|
||||
E-RABInformationList.c \
|
||||
E-RABInformationListItem.c \
|
||||
E-RABList.c \
|
||||
E-RABItem.c \
|
||||
E-RABLevelQoSParameters.c \
|
||||
EUTRAN-CGI.c \
|
||||
ExtendedRNC-ID.c \
|
||||
ForbiddenInterRATs.c \
|
||||
ForbiddenTAs.c \
|
||||
ForbiddenTAs-Item.c \
|
||||
ForbiddenTACs.c \
|
||||
ForbiddenLAs.c \
|
||||
ForbiddenLAs-Item.c \
|
||||
ForbiddenLACs.c \
|
||||
GBR-QosInformation.c \
|
||||
GTP-TEID.c \
|
||||
GUMMEI.c \
|
||||
HandoverRestrictionList.c \
|
||||
HandoverType.c \
|
||||
HFN.c \
|
||||
HandoverNotify.c \
|
||||
Inter-SystemInformationTransferType.c \
|
||||
IMSI.c \
|
||||
IntegrityProtectionAlgorithms.c \
|
||||
InterfacesToTrace.c \
|
||||
LAC.c \
|
||||
LAI.c \
|
||||
LastVisitedCell-Item.c \
|
||||
LastVisitedEUTRANCellInformation.c \
|
||||
LastVisitedUTRANCellInformation.c \
|
||||
LastVisitedGERANCellInformation.c \
|
||||
L3-Information.c \
|
||||
MessageIdentifier.c \
|
||||
MMEname.c \
|
||||
MME-Group-ID.c \
|
||||
MME-Code.c \
|
||||
MME-UE-S1AP-ID.c \
|
||||
M-TMSI.c \
|
||||
MSClassmark2.c \
|
||||
MSClassmark3.c \
|
||||
NAS-PDU.c \
|
||||
NASSecurityParametersfromE-UTRAN.c \
|
||||
NASSecurityParameterstoE-UTRAN.c \
|
||||
NumberofBroadcastRequest.c \
|
||||
NumberOfBroadcasts.c \
|
||||
OldBSS-ToNewBSS-Information.c \
|
||||
OverloadAction.c \
|
||||
OverloadResponse.c \
|
||||
PagingDRX.c \
|
||||
PDCP-SN.c \
|
||||
PLMNidentity.c \
|
||||
Pre-emptionCapability.c \
|
||||
Pre-emptionVulnerability.c \
|
||||
PriorityLevel.c \
|
||||
QCI.c \
|
||||
ReceiveStatusofULPDCPSDUs.c \
|
||||
RelativeMMECapacity.c \
|
||||
RAC.c \
|
||||
RequestType.c \
|
||||
ResetType.c \
|
||||
ResetAll.c \
|
||||
RIMTransfer.c \
|
||||
RIMInformation.c \
|
||||
RIMRoutingAddress.c \
|
||||
ReportArea.c \
|
||||
RepetitionPeriod.c \
|
||||
RNC-ID.c \
|
||||
RRC-Container.c \
|
||||
RRC-Establishment-Cause.c \
|
||||
SecurityKey.c \
|
||||
SecurityContext.c \
|
||||
SerialNumber.c \
|
||||
SONInformation.c \
|
||||
SONInformationRequest.c \
|
||||
SONInformationReply.c \
|
||||
SONConfigurationTransfer.c \
|
||||
Source-ToTarget-TransparentContainer.c \
|
||||
SourceBSS-ToTargetBSS-TransparentContainer.c \
|
||||
SourceeNB-ID.c \
|
||||
SRVCCOperationPossible.c \
|
||||
SRVCCHOIndication.c \
|
||||
SourceeNB-ToTargeteNB-TransparentContainer.c \
|
||||
SourceRNC-ToTargetRNC-TransparentContainer.c \
|
||||
ServedGUMMEIs.c \
|
||||
ServedGUMMEIsItem.c \
|
||||
ServedGroupIDs.c \
|
||||
ServedMMECs.c \
|
||||
ServedPLMNs.c \
|
||||
SubscriberProfileIDforRFP.c \
|
||||
SupportedTAs.c \
|
||||
SupportedTAs-Item.c \
|
||||
S-TMSI.c \
|
||||
TAC.c \
|
||||
TAIListforWarning.c \
|
||||
TAIList.c \
|
||||
TAIItem.c \
|
||||
TAI.c \
|
||||
TAI-Broadcast.c \
|
||||
TAI-Broadcast-Item.c \
|
||||
CompletedCellinTAI.c \
|
||||
CompletedCellinTAI-Item.c \
|
||||
TBCD-STRING.c \
|
||||
TargetID.c \
|
||||
TargeteNB-ID.c \
|
||||
TargetRNC-ID.c \
|
||||
TargeteNB-ToSourceeNB-TransparentContainer.c \
|
||||
Target-ToSource-TransparentContainer.c \
|
||||
TargetRNC-ToSourceRNC-TransparentContainer.c \
|
||||
TargetBSS-ToSourceBSS-TransparentContainer.c \
|
||||
TimeToWait.c \
|
||||
Time-UE-StayedInCell.c \
|
||||
TransportLayerAddress.c \
|
||||
TraceActivation.c \
|
||||
TraceDepth.c \
|
||||
E-UTRAN-Trace-ID.c \
|
||||
TypeOfError.c \
|
||||
UEAggregateMaximumBitrate.c \
|
||||
UE-S1AP-IDs.c \
|
||||
UE-S1AP-ID-pair.c \
|
||||
UE-associatedLogicalS1-ConnectionListRes.c \
|
||||
UE-associatedLogicalS1-ConnectionListResAck.c \
|
||||
UE-associatedLogicalS1-ConnectionItem.c \
|
||||
UEIdentityIndexValue.c \
|
||||
UE-HistoryInformation.c \
|
||||
UEPagingID.c \
|
||||
UERadioCapability.c \
|
||||
UESecurityCapabilities.c \
|
||||
WarningAreaList.c \
|
||||
WarningType.c \
|
||||
WarningSecurityInfo.c \
|
||||
WarningMessageContents.c \
|
||||
X2TNLConfigurationInfo.c \
|
||||
S1AP-PDU.c \
|
||||
InitiatingMessage.c \
|
||||
SuccessfulOutcome.c \
|
||||
UnsuccessfulOutcome.c \
|
||||
HandoverRequired.c \
|
||||
HandoverCommand.c \
|
||||
HandoverPreparationFailure.c \
|
||||
HandoverRequest.c \
|
||||
HandoverRequestAcknowledge.c \
|
||||
HandoverFailure.c \
|
||||
HandoverNotify.c \
|
||||
PathSwitchRequest.c \
|
||||
PathSwitchRequestAcknowledge.c \
|
||||
PathSwitchRequestFailure.c \
|
||||
E-RABSetupRequest.c \
|
||||
E-RABSetupResponse.c \
|
||||
E-RABModifyRequest.c \
|
||||
E-RABModifyResponse.c \
|
||||
E-RABReleaseIndication.c \
|
||||
E-RABReleaseCommand.c \
|
||||
E-RABReleaseResponse.c \
|
||||
InitialContextSetupRequest.c \
|
||||
InitialContextSetupResponse.c \
|
||||
InitialContextSetupFailure.c \
|
||||
UEContextReleaseRequest.c \
|
||||
Paging.c \
|
||||
DownlinkNASTransport.c \
|
||||
InitialUEMessage.c \
|
||||
UplinkNASTransport.c \
|
||||
NASNonDeliveryIndication.c \
|
||||
HandoverCancel.c \
|
||||
HandoverCancelAcknowledge.c \
|
||||
Reset.c \
|
||||
ResetAcknowledge.c \
|
||||
S1SetupResponse.c \
|
||||
S1SetupRequest.c \
|
||||
S1SetupFailure.c \
|
||||
ErrorIndication.c \
|
||||
ENBConfigurationUpdate.c \
|
||||
ENBConfigurationUpdateAcknowledge.c \
|
||||
ENBConfigurationUpdateFailure.c \
|
||||
MMEConfigurationUpdate.c \
|
||||
MMEConfigurationUpdateAcknowledge.c \
|
||||
MMEConfigurationUpdateFailure.c \
|
||||
DownlinkS1cdma2000tunneling.c \
|
||||
UplinkS1cdma2000tunneling.c \
|
||||
UEContextModificationRequest.c \
|
||||
UEContextModificationResponse.c \
|
||||
UEContextModificationFailure.c \
|
||||
UECapabilityInfoIndication.c \
|
||||
UEContextReleaseCommand.c \
|
||||
UEContextReleaseComplete.c \
|
||||
ENBStatusTransfer.c \
|
||||
MMEStatusTransfer.c \
|
||||
DeactivateTrace.c \
|
||||
TraceStart.c \
|
||||
TraceFailureIndication.c \
|
||||
CellTrafficTrace.c \
|
||||
LocationReportingControl.c \
|
||||
LocationReportingFailureIndication.c \
|
||||
LocationReport.c \
|
||||
OverloadStart.c \
|
||||
OverloadStop.c \
|
||||
WriteReplaceWarningRequest.c \
|
||||
WriteReplaceWarningResponse.c \
|
||||
ENBDirectInformationTransfer.c \
|
||||
MMEDirectInformationTransfer.c \
|
||||
ENBConfigurationTransfer.c \
|
||||
MMEConfigurationTransfer.c \
|
||||
PrivateMessage.c \
|
||||
IE.c \
|
||||
IE-Extensions.c
|
||||
|
||||
ASN_MODULE_HEADERS= \
|
||||
Criticality.h \
|
||||
Presence.h \
|
||||
PrivateIE-ID.h \
|
||||
ProcedureCode.h \
|
||||
ProtocolExtensionID.h \
|
||||
ProtocolIE-ID.h \
|
||||
TriggeringMessage.h \
|
||||
AllocationAndRetentionPriority.h \
|
||||
Bearers-SubjectToStatusTransfer-List.h \
|
||||
Bearers-SubjectToStatusTransfer-Item.h \
|
||||
BitRate.h \
|
||||
BPLMNs.h \
|
||||
BroadcastCompletedAreaList.h \
|
||||
Cause.h \
|
||||
CauseMisc.h \
|
||||
CauseProtocol.h \
|
||||
CauseRadioNetwork.h \
|
||||
CauseTransport.h \
|
||||
CauseNas.h \
|
||||
CellIdentity.h \
|
||||
CellID-Broadcast.h \
|
||||
CellID-Broadcast-Item.h \
|
||||
Cdma2000PDU.h \
|
||||
Cdma2000RATType.h \
|
||||
Cdma2000SectorID.h \
|
||||
Cdma2000HOStatus.h \
|
||||
Cdma2000HORequiredIndication.h \
|
||||
Cdma2000OneXSRVCCInfo.h \
|
||||
Cdma2000OneXMEID.h \
|
||||
Cdma2000OneXMSI.h \
|
||||
Cdma2000OneXPilot.h \
|
||||
Cdma2000OneXRAND.h \
|
||||
Cell-Size.h \
|
||||
CellType.h \
|
||||
CGI.h \
|
||||
CI.h \
|
||||
CNDomain.h \
|
||||
CSFallbackIndicator.h \
|
||||
CSG-Id.h \
|
||||
CSG-IdList.h \
|
||||
CSG-IdList-Item.h \
|
||||
COUNTvalue.h \
|
||||
CriticalityDiagnostics.h \
|
||||
CriticalityDiagnostics-IE-List.h \
|
||||
CriticalityDiagnostics-IE-Item.h \
|
||||
DataCodingScheme.h \
|
||||
DL-Forwarding.h \
|
||||
Direct-Forwarding-Path-Availability.h \
|
||||
E-RABToBeModifiedListBearerModReq.h \
|
||||
E-RABToBeModifiedItemBearerModReq.h \
|
||||
E-RABReleaseListBearerRelComp.h \
|
||||
E-RABReleaseItemBearerRelComp.h \
|
||||
E-RABDataForwardingList.h \
|
||||
E-RABDataForwardingItem.h \
|
||||
E-RABToBeSetupListCtxtSUReq.h \
|
||||
E-RABToBeSetupItemCtxtSUReq.h \
|
||||
E-RABSetupListBearerSURes.h \
|
||||
E-RABSetupItemBearerSURes.h \
|
||||
E-RABFailedtoSetupListHOReqAck.h \
|
||||
E-RABFailedToSetupItemHOReqAck.h \
|
||||
E-RABToBeSetupListBearerSUReq.h \
|
||||
E-RABToBeSetupItemBearerSUReq.h \
|
||||
E-RABAdmittedList.h \
|
||||
E-RABAdmittedItem.h \
|
||||
E-RABToBeSwitchedDLList.h \
|
||||
E-RABToBeSwitchedDLItem.h \
|
||||
E-RABToBeSwitchedULList.h \
|
||||
E-RABToBeSwitchedULItem.h \
|
||||
E-RABModifyListBearerModRes.h \
|
||||
E-RABModifyItemBearerModRes.h \
|
||||
E-RABSetupListCtxtSURes.h \
|
||||
E-RABSetupItemCtxtSURes.h \
|
||||
E-RABToBeSetupListHOReq.h \
|
||||
E-RABToBeSetupItemHOReq.h \
|
||||
ECGIList.h \
|
||||
EmergencyAreaIDList.h \
|
||||
EmergencyAreaID.h \
|
||||
EmergencyAreaID-Broadcast.h \
|
||||
EmergencyAreaID-Broadcast-Item.h \
|
||||
CompletedCellinEAI.h \
|
||||
CompletedCellinEAI-Item.h \
|
||||
ENB-ID.h \
|
||||
GERAN-Cell-ID.h \
|
||||
Global-ENB-ID.h \
|
||||
ENB-StatusTransfer-TransparentContainer.h \
|
||||
ENB-UE-S1AP-ID.h \
|
||||
ENBname.h \
|
||||
ENBX2TLAs.h \
|
||||
EncryptionAlgorithms.h \
|
||||
EPLMNs.h \
|
||||
EventType.h \
|
||||
E-RAB-ID.h \
|
||||
E-RABInformationList.h \
|
||||
E-RABInformationListItem.h \
|
||||
E-RABList.h \
|
||||
E-RABItem.h \
|
||||
E-RABLevelQoSParameters.h \
|
||||
EUTRAN-CGI.h \
|
||||
ExtendedRNC-ID.h \
|
||||
ForbiddenInterRATs.h \
|
||||
ForbiddenTAs.h \
|
||||
ForbiddenTAs-Item.h \
|
||||
ForbiddenTACs.h \
|
||||
ForbiddenLAs.h \
|
||||
ForbiddenLAs-Item.h \
|
||||
ForbiddenLACs.h \
|
||||
GBR-QosInformation.h \
|
||||
GTP-TEID.h \
|
||||
GUMMEI.h \
|
||||
HandoverRestrictionList.h \
|
||||
HandoverType.h \
|
||||
HFN.h \
|
||||
HandoverNotify.h \
|
||||
Inter-SystemInformationTransferType.h \
|
||||
IMSI.h \
|
||||
IntegrityProtectionAlgorithms.h \
|
||||
InterfacesToTrace.h \
|
||||
LAC.h \
|
||||
LAI.h \
|
||||
LastVisitedCell-Item.h \
|
||||
LastVisitedEUTRANCellInformation.h \
|
||||
LastVisitedUTRANCellInformation.h \
|
||||
LastVisitedGERANCellInformation.h \
|
||||
L3-Information.h \
|
||||
MessageIdentifier.h \
|
||||
MMEname.h \
|
||||
MME-Group-ID.h \
|
||||
MME-Code.h \
|
||||
MME-UE-S1AP-ID.h \
|
||||
M-TMSI.h \
|
||||
MSClassmark2.h \
|
||||
MSClassmark3.h \
|
||||
NAS-PDU.h \
|
||||
NASSecurityParametersfromE-UTRAN.h \
|
||||
NASSecurityParameterstoE-UTRAN.h \
|
||||
NumberofBroadcastRequest.h \
|
||||
NumberOfBroadcasts.h \
|
||||
OldBSS-ToNewBSS-Information.h \
|
||||
OverloadAction.h \
|
||||
OverloadResponse.h \
|
||||
PagingDRX.h \
|
||||
PDCP-SN.h \
|
||||
PLMNidentity.h \
|
||||
Pre-emptionCapability.h \
|
||||
Pre-emptionVulnerability.h \
|
||||
PriorityLevel.h \
|
||||
QCI.h \
|
||||
ReceiveStatusofULPDCPSDUs.h \
|
||||
RelativeMMECapacity.h \
|
||||
RAC.h \
|
||||
RequestType.h \
|
||||
ResetType.h \
|
||||
ResetAll.h \
|
||||
RIMTransfer.h \
|
||||
RIMInformation.h \
|
||||
RIMRoutingAddress.h \
|
||||
ReportArea.h \
|
||||
RepetitionPeriod.h \
|
||||
RNC-ID.h \
|
||||
RRC-Container.h \
|
||||
RRC-Establishment-Cause.h \
|
||||
SecurityKey.h \
|
||||
SecurityContext.h \
|
||||
SerialNumber.h \
|
||||
SONInformation.h \
|
||||
SONInformationRequest.h \
|
||||
SONInformationReply.h \
|
||||
SONConfigurationTransfer.h \
|
||||
Source-ToTarget-TransparentContainer.h \
|
||||
SourceBSS-ToTargetBSS-TransparentContainer.h \
|
||||
SourceeNB-ID.h \
|
||||
SRVCCOperationPossible.h \
|
||||
SRVCCHOIndication.h \
|
||||
SourceeNB-ToTargeteNB-TransparentContainer.h \
|
||||
SourceRNC-ToTargetRNC-TransparentContainer.h \
|
||||
ServedGUMMEIs.h \
|
||||
ServedGUMMEIsItem.h \
|
||||
ServedGroupIDs.h \
|
||||
ServedMMECs.h \
|
||||
ServedPLMNs.h \
|
||||
SubscriberProfileIDforRFP.h \
|
||||
SupportedTAs.h \
|
||||
SupportedTAs-Item.h \
|
||||
S-TMSI.h \
|
||||
TAC.h \
|
||||
TAIListforWarning.h \
|
||||
TAIList.h \
|
||||
TAIItem.h \
|
||||
TAI.h \
|
||||
TAI-Broadcast.h \
|
||||
TAI-Broadcast-Item.h \
|
||||
CompletedCellinTAI.h \
|
||||
CompletedCellinTAI-Item.h \
|
||||
TBCD-STRING.h \
|
||||
TargetID.h \
|
||||
TargeteNB-ID.h \
|
||||
TargetRNC-ID.h \
|
||||
TargeteNB-ToSourceeNB-TransparentContainer.h \
|
||||
Target-ToSource-TransparentContainer.h \
|
||||
TargetRNC-ToSourceRNC-TransparentContainer.h \
|
||||
TargetBSS-ToSourceBSS-TransparentContainer.h \
|
||||
TimeToWait.h \
|
||||
Time-UE-StayedInCell.h \
|
||||
TransportLayerAddress.h \
|
||||
TraceActivation.h \
|
||||
TraceDepth.h \
|
||||
E-UTRAN-Trace-ID.h \
|
||||
TypeOfError.h \
|
||||
UEAggregateMaximumBitrate.h \
|
||||
UE-S1AP-IDs.h \
|
||||
UE-S1AP-ID-pair.h \
|
||||
UE-associatedLogicalS1-ConnectionListRes.h \
|
||||
UE-associatedLogicalS1-ConnectionListResAck.h \
|
||||
UE-associatedLogicalS1-ConnectionItem.h \
|
||||
UEIdentityIndexValue.h \
|
||||
UE-HistoryInformation.h \
|
||||
UEPagingID.h \
|
||||
UERadioCapability.h \
|
||||
UESecurityCapabilities.h \
|
||||
WarningAreaList.h \
|
||||
WarningType.h \
|
||||
WarningSecurityInfo.h \
|
||||
WarningMessageContents.h \
|
||||
X2TNLConfigurationInfo.h \
|
||||
S1AP-PDU.h \
|
||||
InitiatingMessage.h \
|
||||
SuccessfulOutcome.h \
|
||||
UnsuccessfulOutcome.h \
|
||||
HandoverRequired.h \
|
||||
HandoverCommand.h \
|
||||
HandoverPreparationFailure.h \
|
||||
HandoverRequest.h \
|
||||
HandoverRequestAcknowledge.h \
|
||||
HandoverFailure.h \
|
||||
PathSwitchRequest.h \
|
||||
PathSwitchRequestAcknowledge.h \
|
||||
PathSwitchRequestFailure.h \
|
||||
E-RABSetupRequest.h \
|
||||
E-RABSetupResponse.h \
|
||||
E-RABModifyRequest.h \
|
||||
E-RABModifyResponse.h \
|
||||
E-RABReleaseIndication.h \
|
||||
E-RABReleaseCommand.h \
|
||||
E-RABReleaseResponse.h \
|
||||
InitialContextSetupRequest.h \
|
||||
InitialContextSetupResponse.h \
|
||||
InitialContextSetupFailure.h \
|
||||
UEContextReleaseRequest.h \
|
||||
Paging.h \
|
||||
DownlinkNASTransport.h \
|
||||
InitialUEMessage.h \
|
||||
UplinkNASTransport.h \
|
||||
NASNonDeliveryIndication.h \
|
||||
HandoverCancel.h \
|
||||
HandoverCancelAcknowledge.h \
|
||||
Reset.h \
|
||||
ResetAcknowledge.h \
|
||||
S1SetupResponse.h \
|
||||
S1SetupRequest.h \
|
||||
S1SetupFailure.h \
|
||||
ErrorIndication.h \
|
||||
ENBConfigurationUpdate.h \
|
||||
ENBConfigurationUpdateAcknowledge.h \
|
||||
ENBConfigurationUpdateFailure.h \
|
||||
MMEConfigurationUpdate.h \
|
||||
MMEConfigurationUpdateAcknowledge.h \
|
||||
MMEConfigurationUpdateFailure.h \
|
||||
DownlinkS1cdma2000tunneling.h \
|
||||
UplinkS1cdma2000tunneling.h \
|
||||
UEContextModificationRequest.h \
|
||||
UEContextModificationResponse.h \
|
||||
UEContextModificationFailure.h \
|
||||
UECapabilityInfoIndication.h \
|
||||
UEContextReleaseCommand.h \
|
||||
UEContextReleaseComplete.h \
|
||||
ENBStatusTransfer.h \
|
||||
MMEStatusTransfer.h \
|
||||
DeactivateTrace.h \
|
||||
TraceStart.h \
|
||||
TraceFailureIndication.h \
|
||||
CellTrafficTrace.h \
|
||||
LocationReportingControl.h \
|
||||
LocationReportingFailureIndication.h \
|
||||
LocationReport.h \
|
||||
OverloadStart.h \
|
||||
OverloadStop.h \
|
||||
WriteReplaceWarningRequest.h \
|
||||
WriteReplaceWarningResponse.h \
|
||||
ENBDirectInformationTransfer.h \
|
||||
MMEDirectInformationTransfer.h \
|
||||
ENBConfigurationTransfer.h \
|
||||
MMEConfigurationTransfer.h \
|
||||
PrivateMessage.h \
|
||||
IE.h \
|
||||
IE-Extensions.h
|
||||
|
||||
ASN_MODULE_HEADERS+=ANY.h
|
||||
ASN_MODULE_SOURCES+=ANY.c
|
||||
ASN_MODULE_HEADERS+=BOOLEAN.h
|
||||
ASN_MODULE_SOURCES+=BOOLEAN.c
|
||||
ASN_MODULE_HEADERS+=INTEGER.h
|
||||
ASN_MODULE_HEADERS+=NativeEnumerated.h
|
||||
ASN_MODULE_SOURCES+=INTEGER.c
|
||||
ASN_MODULE_HEADERS+=NULL.h
|
||||
ASN_MODULE_SOURCES+=NULL.c
|
||||
ASN_MODULE_SOURCES+=NativeEnumerated.c
|
||||
ASN_MODULE_HEADERS+=NativeInteger.h
|
||||
ASN_MODULE_SOURCES+=NativeInteger.c
|
||||
ASN_MODULE_HEADERS+=OBJECT_IDENTIFIER.h
|
||||
ASN_MODULE_SOURCES+=OBJECT_IDENTIFIER.c
|
||||
ASN_MODULE_HEADERS+=PrintableString.h
|
||||
ASN_MODULE_SOURCES+=PrintableString.c
|
||||
ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
|
||||
ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c
|
||||
ASN_MODULE_HEADERS+=asn_SET_OF.h
|
||||
ASN_MODULE_SOURCES+=asn_SET_OF.c
|
||||
ASN_MODULE_HEADERS+=constr_CHOICE.h
|
||||
ASN_MODULE_SOURCES+=constr_CHOICE.c
|
||||
ASN_MODULE_HEADERS+=constr_SEQUENCE.h
|
||||
ASN_MODULE_SOURCES+=constr_SEQUENCE.c
|
||||
ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
|
||||
ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c
|
||||
ASN_MODULE_HEADERS+=constr_SET_OF.h
|
||||
ASN_MODULE_SOURCES+=constr_SET_OF.c
|
||||
ASN_MODULE_HEADERS+=asn_application.h
|
||||
ASN_MODULE_HEADERS+=asn_system.h
|
||||
ASN_MODULE_HEADERS+=asn_codecs.h
|
||||
ASN_MODULE_HEADERS+=asn_internal.h
|
||||
ASN_MODULE_HEADERS+=OCTET_STRING.h
|
||||
ASN_MODULE_SOURCES+=OCTET_STRING.c
|
||||
ASN_MODULE_HEADERS+=BIT_STRING.h
|
||||
ASN_MODULE_SOURCES+=BIT_STRING.c
|
||||
ASN_MODULE_SOURCES+=asn_codecs_prim.c
|
||||
ASN_MODULE_HEADERS+=asn_codecs_prim.h
|
||||
ASN_MODULE_HEADERS+=ber_tlv_length.h
|
||||
ASN_MODULE_SOURCES+=ber_tlv_length.c
|
||||
ASN_MODULE_HEADERS+=ber_tlv_tag.h
|
||||
ASN_MODULE_SOURCES+=ber_tlv_tag.c
|
||||
ASN_MODULE_HEADERS+=ber_decoder.h
|
||||
ASN_MODULE_SOURCES+=ber_decoder.c
|
||||
ASN_MODULE_HEADERS+=der_encoder.h
|
||||
ASN_MODULE_SOURCES+=der_encoder.c
|
||||
ASN_MODULE_HEADERS+=constr_TYPE.h
|
||||
ASN_MODULE_SOURCES+=constr_TYPE.c
|
||||
ASN_MODULE_HEADERS+=constraints.h
|
||||
ASN_MODULE_SOURCES+=constraints.c
|
||||
ASN_MODULE_HEADERS+=xer_support.h
|
||||
ASN_MODULE_SOURCES+=xer_support.c
|
||||
ASN_MODULE_HEADERS+=xer_decoder.h
|
||||
ASN_MODULE_SOURCES+=xer_decoder.c
|
||||
ASN_MODULE_HEADERS+=xer_encoder.h
|
||||
ASN_MODULE_SOURCES+=xer_encoder.c
|
||||
ASN_MODULE_HEADERS+=per_support.h
|
||||
ASN_MODULE_SOURCES+=per_support.c
|
||||
ASN_MODULE_HEADERS+=per_decoder.h
|
||||
ASN_MODULE_SOURCES+=per_decoder.c
|
||||
ASN_MODULE_HEADERS+=per_encoder.h
|
||||
ASN_MODULE_SOURCES+=per_encoder.c
|
||||
ASN_MODULE_HEADERS+=per_opentype.h
|
||||
ASN_MODULE_SOURCES+=per_opentype.c
|
||||
|
||||
if UPDATE_RELEASE_9
|
||||
ASN_MODULE_SOURCES += \
|
||||
KillResponse.c \
|
||||
KillRequest.c \
|
||||
Data-Forwarding-Not-Possible.c \
|
||||
DownlinkUEAssociatedLPPaTransport.c \
|
||||
UplinkUEAssociatedLPPaTransport.c \
|
||||
DownlinkNonUEAssociatedLPPaTransport.c \
|
||||
UplinkNonUEAssociatedLPPaTransport.c \
|
||||
TAI-Cancelled.c \
|
||||
TAI-Cancelled-Item.c \
|
||||
StratumLevel.c \
|
||||
SynchronizationStatus.c \
|
||||
TimeSynchronizationInfo.c \
|
||||
Routing-ID.c \
|
||||
PS-ServiceNotAvailable.c \
|
||||
LPPa-PDU.c \
|
||||
ExtendedRepetitionPeriod.c \
|
||||
EUTRANRoundTripDelayEstimationInfo.c \
|
||||
EmergencyAreaID-Cancelled.c \
|
||||
EmergencyAreaID-Cancelled-Item.c \
|
||||
CSGMembershipStatus.c \
|
||||
ConcurrentWarningMessageIndicator.c \
|
||||
CellID-Cancelled.c \
|
||||
CellID-Cancelled-Item.c \
|
||||
CellAccessMode.c \
|
||||
CancelledCellinEAI.c \
|
||||
CancelledCellinEAI-Item.c \
|
||||
CancelledCellinTAI.c \
|
||||
CancelledCellinTAI-Item.c \
|
||||
BroadcastCancelledAreaList.c
|
||||
|
||||
ASN_MODULE_HEADERS += \
|
||||
BroadcastCancelledAreaList.h \
|
||||
CancelledCellinEAI.h \
|
||||
CancelledCellinEAI-Item.h \
|
||||
CancelledCellinTAI.h \
|
||||
CancelledCellinTAI-Item.h \
|
||||
CellAccessMode.h \
|
||||
CellID-Cancelled.h \
|
||||
CellID-Cancelled-Item.h \
|
||||
ConcurrentWarningMessageIndicator.h \
|
||||
CSGMembershipStatus.h \
|
||||
Data-Forwarding-Not-Possible.h \
|
||||
EmergencyAreaID-Cancelled.h \
|
||||
EmergencyAreaID-Cancelled-Item.h \
|
||||
E-RABList.h \
|
||||
EUTRANRoundTripDelayEstimationInfo.h \
|
||||
ExtendedRepetitionPeriod.h \
|
||||
LPPa-PDU.h \
|
||||
PS-ServiceNotAvailable.h \
|
||||
Routing-ID.h \
|
||||
StratumLevel.h \
|
||||
SynchronizationStatus.h \
|
||||
TimeSynchronizationInfo.h \
|
||||
TAI-Cancelled.h \
|
||||
TAI-Cancelled-Item.h \
|
||||
KillResponse.h \
|
||||
KillRequest.h \
|
||||
DownlinkUEAssociatedLPPaTransport.h \
|
||||
UplinkUEAssociatedLPPaTransport.h \
|
||||
DownlinkNonUEAssociatedLPPaTransport.h \
|
||||
UplinkNonUEAssociatedLPPaTransport.h
|
||||
endif
|
||||
|
||||
noinst_LTLIBRARIES = libs1apmessages.la
|
||||
libs1apmessages_la_LDFLAGS = -all-static
|
||||
|
||||
BUILT_SOURCES = asn1regen.stamp
|
||||
|
||||
AM_CPPFLAGS = -DEMIT_ASN_DEBUG=1
|
||||
|
||||
libs1apmessages_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
|
||||
|
||||
asn1regen.stamp: ASN1/$(ASN1DIR)/S1AP-CommonDataTypes.asn ASN1/$(ASN1DIR)/S1AP-Constants.asn ASN1/$(ASN1DIR)/S1AP-IEs.asn ASN1/$(ASN1DIR)/S1AP-PDU.asn
|
||||
echo Timestamp > $@
|
||||
asn1c -gen-PER -fnative-types -fskeletons-copy $^
|
||||
|
||||
clean-messages:
|
||||
rm -f *.lo
|
||||
|
||||
clean-local:
|
||||
rm -f asn1regen.stamp
|
||||
rm -f Makefile.am.sample
|
||||
rm -f converter-sample.c
|
||||
rm -f $(ASN_MODULE_SOURCES)
|
||||
rm -f $(ASN_MODULE_HEADERS)
|
||||
rm -f $(ASN_MODULE_HEADERS_IES)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,738 +0,0 @@
|
||||
S1AP_ASN_MODULE_SOURCES= \
|
||||
Criticality.o \
|
||||
Presence.o \
|
||||
PrivateIE-ID.o \
|
||||
ProcedureCode.o \
|
||||
ProtocolExtensionID.o \
|
||||
ProtocolIE-ID.o \
|
||||
TriggeringMessage.o \
|
||||
IE-Extensions.o \
|
||||
AllocationAndRetentionPriority.o \
|
||||
Bearers-SubjectToStatusTransfer-List.o \
|
||||
Bearers-SubjectToStatusTransfer-Item.o \
|
||||
BitRate.o \
|
||||
BPLMNs.o \
|
||||
BroadcastCompletedAreaList.o \
|
||||
Cause.o \
|
||||
CauseMisc.o \
|
||||
CauseProtocol.o \
|
||||
CauseRadioNetwork.o \
|
||||
CauseTransport.o \
|
||||
CauseNas.o \
|
||||
CellIdentity.o \
|
||||
CellID-Broadcast.o \
|
||||
CellID-Broadcast-Item.o \
|
||||
Cdma2000PDU.o \
|
||||
Cdma2000RATType.o \
|
||||
Cdma2000SectorID.o \
|
||||
Cdma2000HOStatus.o \
|
||||
Cdma2000HORequiredIndication.o \
|
||||
Cdma2000OneXSRVCCInfo.o \
|
||||
Cdma2000OneXMEID.o \
|
||||
Cdma2000OneXMSI.o \
|
||||
Cdma2000OneXPilot.o \
|
||||
Cdma2000OneXRAND.o \
|
||||
Cell-Size.o \
|
||||
CellType.o \
|
||||
CGI.o \
|
||||
CI.o \
|
||||
CNDomain.o \
|
||||
CSFallbackIndicator.o \
|
||||
CSG-Id.o \
|
||||
CSG-IdList.o \
|
||||
CSG-IdList-Item.o \
|
||||
COUNTvalue.o \
|
||||
CriticalityDiagnostics.o \
|
||||
CriticalityDiagnostics-IE-List.o \
|
||||
CriticalityDiagnostics-IE-Item.o \
|
||||
DataCodingScheme.o \
|
||||
DL-Forwarding.o \
|
||||
Direct-Forwarding-Path-Availability.o \
|
||||
E-RABToBeModifiedListBearerModReq.o \
|
||||
E-RABToBeModifiedItemBearerModReq.o \
|
||||
E-RABReleaseListBearerRelComp.o \
|
||||
E-RABReleaseItemBearerRelComp.o \
|
||||
E-RABDataForwardingList.o \
|
||||
E-RABDataForwardingItem.o \
|
||||
E-RABToBeSetupListCtxtSUReq.o \
|
||||
E-RABToBeSetupItemCtxtSUReq.o \
|
||||
E-RABSetupListBearerSURes.o \
|
||||
E-RABSetupItemBearerSURes.o \
|
||||
E-RABFailedtoSetupListHOReqAck.o \
|
||||
E-RABFailedToSetupItemHOReqAck.o \
|
||||
E-RABToBeSetupListBearerSUReq.o \
|
||||
E-RABToBeSetupItemBearerSUReq.o \
|
||||
E-RABAdmittedList.o \
|
||||
E-RABAdmittedItem.o \
|
||||
E-RABToBeSwitchedDLList.o \
|
||||
E-RABToBeSwitchedDLItem.o \
|
||||
E-RABToBeSwitchedULList.o \
|
||||
E-RABToBeSwitchedULItem.o \
|
||||
E-RABModifyListBearerModRes.o \
|
||||
E-RABModifyItemBearerModRes.o \
|
||||
E-RABSetupListCtxtSURes.o \
|
||||
E-RABSetupItemCtxtSURes.o \
|
||||
E-RABToBeSetupListHOReq.o \
|
||||
E-RABToBeSetupItemHOReq.o \
|
||||
ECGIList.o \
|
||||
EmergencyAreaIDList.o \
|
||||
EmergencyAreaID.o \
|
||||
EmergencyAreaID-Broadcast.o \
|
||||
EmergencyAreaID-Broadcast-Item.o \
|
||||
CompletedCellinEAI.o \
|
||||
CompletedCellinEAI-Item.o \
|
||||
ENB-ID.o \
|
||||
GERAN-Cell-ID.o \
|
||||
Global-ENB-ID.o \
|
||||
ENB-StatusTransfer-TransparentContainer.o \
|
||||
ENB-UE-S1AP-ID.o \
|
||||
ENBname.o \
|
||||
ENBX2TLAs.o \
|
||||
EncryptionAlgorithms.o \
|
||||
EPLMNs.o \
|
||||
EventType.o \
|
||||
E-RAB-ID.o \
|
||||
E-RABInformationList.o \
|
||||
E-RABInformationListItem.o \
|
||||
E-RABList.o \
|
||||
E-RABItem.o \
|
||||
E-RABLevelQoSParameters.o \
|
||||
EUTRAN-CGI.o \
|
||||
ExtendedRNC-ID.o \
|
||||
ForbiddenInterRATs.o \
|
||||
ForbiddenTAs.o \
|
||||
ForbiddenTAs-Item.o \
|
||||
ForbiddenTACs.o \
|
||||
ForbiddenLAs.o \
|
||||
ForbiddenLAs-Item.o \
|
||||
ForbiddenLACs.o \
|
||||
GBR-QosInformation.o \
|
||||
GTP-TEID.o \
|
||||
GUMMEI.o \
|
||||
HandoverRestrictionList.o \
|
||||
HandoverType.o \
|
||||
HFN.o \
|
||||
Inter-SystemInformationTransferType.o \
|
||||
IMSI.o \
|
||||
IntegrityProtectionAlgorithms.o \
|
||||
InterfacesToTrace.o \
|
||||
LAC.o \
|
||||
LAI.o \
|
||||
LastVisitedCell-Item.o \
|
||||
LastVisitedEUTRANCellInformation.o \
|
||||
LastVisitedUTRANCellInformation.o \
|
||||
LastVisitedGERANCellInformation.o \
|
||||
L3-Information.o \
|
||||
MessageIdentifier.o \
|
||||
MMEname.o \
|
||||
MME-Group-ID.o \
|
||||
MME-Code.o \
|
||||
MME-UE-S1AP-ID.o \
|
||||
M-TMSI.o \
|
||||
MSClassmark2.o \
|
||||
MSClassmark3.o \
|
||||
NAS-PDU.o \
|
||||
NASSecurityParametersfromE-UTRAN.o \
|
||||
NASSecurityParameterstoE-UTRAN.o \
|
||||
NumberofBroadcastRequest.o \
|
||||
NumberOfBroadcasts.o \
|
||||
OldBSS-ToNewBSS-Information.o \
|
||||
OverloadAction.o \
|
||||
OverloadResponse.o \
|
||||
PagingDRX.o \
|
||||
PDCP-SN.o \
|
||||
PLMNidentity.o \
|
||||
Pre-emptionCapability.o \
|
||||
Pre-emptionVulnerability.o \
|
||||
PriorityLevel.o \
|
||||
QCI.o \
|
||||
ReceiveStatusofULPDCPSDUs.o \
|
||||
RelativeMMECapacity.o \
|
||||
RAC.o \
|
||||
RequestType.o \
|
||||
ResetType.o \
|
||||
ResetAll.o \
|
||||
RIMTransfer.o \
|
||||
RIMInformation.o \
|
||||
RIMRoutingAddress.o \
|
||||
ReportArea.o \
|
||||
RepetitionPeriod.o \
|
||||
RNC-ID.o \
|
||||
RRC-Container.o \
|
||||
RRC-Establishment-Cause.o \
|
||||
SecurityKey.o \
|
||||
SecurityContext.o \
|
||||
SerialNumber.o \
|
||||
SONInformation.o \
|
||||
SONInformationRequest.o \
|
||||
SONInformationReply.o \
|
||||
SONConfigurationTransfer.o \
|
||||
Source-ToTarget-TransparentContainer.o \
|
||||
SourceBSS-ToTargetBSS-TransparentContainer.o \
|
||||
SourceeNB-ID.o \
|
||||
SRVCCOperationPossible.o \
|
||||
SRVCCHOIndication.o \
|
||||
SourceeNB-ToTargeteNB-TransparentContainer.o \
|
||||
SourceRNC-ToTargetRNC-TransparentContainer.o \
|
||||
ServedGUMMEIs.o \
|
||||
ServedGUMMEIsItem.o \
|
||||
ServedGroupIDs.o \
|
||||
ServedMMECs.o \
|
||||
ServedPLMNs.o \
|
||||
SubscriberProfileIDforRFP.o \
|
||||
SupportedTAs.o \
|
||||
SupportedTAs-Item.o \
|
||||
S-TMSI.o \
|
||||
TAC.o \
|
||||
TAIListforWarning.o \
|
||||
TAIList.o \
|
||||
TAIItem.o \
|
||||
TAI.o \
|
||||
TAI-Broadcast.o \
|
||||
TAI-Broadcast-Item.o \
|
||||
CompletedCellinTAI.o \
|
||||
CompletedCellinTAI-Item.o \
|
||||
TBCD-STRING.o \
|
||||
TargetID.o \
|
||||
TargeteNB-ID.o \
|
||||
TargetRNC-ID.o \
|
||||
TargeteNB-ToSourceeNB-TransparentContainer.o \
|
||||
Target-ToSource-TransparentContainer.o \
|
||||
TargetRNC-ToSourceRNC-TransparentContainer.o \
|
||||
TargetBSS-ToSourceBSS-TransparentContainer.o \
|
||||
TimeToWait.o \
|
||||
Time-UE-StayedInCell.o \
|
||||
TransportLayerAddress.o \
|
||||
TraceActivation.o \
|
||||
TraceDepth.o \
|
||||
E-UTRAN-Trace-ID.o \
|
||||
TypeOfError.o \
|
||||
UEAggregateMaximumBitrate.o \
|
||||
UE-S1AP-IDs.o \
|
||||
UE-S1AP-ID-pair.o \
|
||||
UE-associatedLogicalS1-ConnectionListRes.o \
|
||||
UE-associatedLogicalS1-ConnectionListResAck.o \
|
||||
UE-associatedLogicalS1-ConnectionItem.o \
|
||||
UEIdentityIndexValue.o \
|
||||
UE-HistoryInformation.o \
|
||||
UEPagingID.o \
|
||||
UERadioCapability.o \
|
||||
UESecurityCapabilities.o \
|
||||
WarningAreaList.o \
|
||||
WarningType.o \
|
||||
WarningSecurityInfo.o \
|
||||
WarningMessageContents.o \
|
||||
X2TNLConfigurationInfo.o \
|
||||
S1AP-PDU.o \
|
||||
InitiatingMessage.o \
|
||||
SuccessfulOutcome.o \
|
||||
UnsuccessfulOutcome.o \
|
||||
HandoverRequired.o \
|
||||
HandoverCommand.o \
|
||||
HandoverPreparationFailure.o \
|
||||
HandoverRequest.o \
|
||||
HandoverRequestAcknowledge.o \
|
||||
HandoverFailure.o \
|
||||
HandoverNotify.o \
|
||||
PathSwitchRequest.o \
|
||||
PathSwitchRequestAcknowledge.o \
|
||||
PathSwitchRequestFailure.o \
|
||||
E-RABSetupRequest.o \
|
||||
E-RABSetupResponse.o \
|
||||
E-RABModifyRequest.o \
|
||||
E-RABModifyResponse.o \
|
||||
E-RABReleaseIndication.o \
|
||||
E-RABReleaseCommand.o \
|
||||
E-RABReleaseResponse.o \
|
||||
InitialContextSetupRequest.o \
|
||||
InitialContextSetupResponse.o \
|
||||
InitialContextSetupFailure.o \
|
||||
UEContextReleaseRequest.o \
|
||||
Paging.o \
|
||||
DownlinkNASTransport.o \
|
||||
InitialUEMessage.o \
|
||||
UplinkNASTransport.o \
|
||||
NASNonDeliveryIndication.o \
|
||||
HandoverCancel.o \
|
||||
HandoverCancelAcknowledge.o \
|
||||
Reset.o \
|
||||
ResetAcknowledge.o \
|
||||
S1SetupResponse.o \
|
||||
S1SetupRequest.o \
|
||||
S1SetupFailure.o \
|
||||
ErrorIndication.o \
|
||||
ENBConfigurationUpdate.o \
|
||||
ENBConfigurationUpdateAcknowledge.o \
|
||||
ENBConfigurationUpdateFailure.o \
|
||||
MMEConfigurationUpdate.o \
|
||||
MMEConfigurationUpdateAcknowledge.o \
|
||||
MMEConfigurationUpdateFailure.o \
|
||||
DownlinkS1cdma2000tunneling.o \
|
||||
UplinkS1cdma2000tunneling.o \
|
||||
UEContextModificationRequest.o \
|
||||
UEContextModificationResponse.o \
|
||||
UEContextModificationFailure.o \
|
||||
UECapabilityInfoIndication.o \
|
||||
UEContextReleaseCommand.o \
|
||||
UEContextReleaseComplete.o \
|
||||
ENBStatusTransfer.o \
|
||||
MMEStatusTransfer.o \
|
||||
DeactivateTrace.o \
|
||||
TraceStart.o \
|
||||
TraceFailureIndication.o \
|
||||
CellTrafficTrace.o \
|
||||
LocationReportingControl.o \
|
||||
LocationReportingFailureIndication.o \
|
||||
LocationReport.o \
|
||||
OverloadStart.o \
|
||||
OverloadStop.o \
|
||||
WriteReplaceWarningRequest.o \
|
||||
WriteReplaceWarningResponse.o \
|
||||
ENBDirectInformationTransfer.o \
|
||||
MMEDirectInformationTransfer.o \
|
||||
ENBConfigurationTransfer.o \
|
||||
MMEConfigurationTransfer.o \
|
||||
PrivateMessage.o \
|
||||
IE.o
|
||||
|
||||
S1AP_ASN_MODULE_HEADERS= \
|
||||
Criticality.h \
|
||||
Presence.h \
|
||||
PrivateIE-ID.h \
|
||||
ProcedureCode.h \
|
||||
ProtocolExtensionID.h \
|
||||
ProtocolIE-ID.h \
|
||||
TriggeringMessage.h \
|
||||
IE-Extensions.h \
|
||||
AllocationAndRetentionPriority.h \
|
||||
Bearers-SubjectToStatusTransfer-List.h \
|
||||
Bearers-SubjectToStatusTransfer-Item.h \
|
||||
BitRate.h \
|
||||
BPLMNs.h \
|
||||
BroadcastCompletedAreaList.h \
|
||||
Cause.h \
|
||||
CauseMisc.h \
|
||||
CauseProtocol.h \
|
||||
CauseRadioNetwork.h \
|
||||
CauseTransport.h \
|
||||
CauseNas.h \
|
||||
CellIdentity.h \
|
||||
CellID-Broadcast.h \
|
||||
CellID-Broadcast-Item.h \
|
||||
Cdma2000PDU.h \
|
||||
Cdma2000RATType.h \
|
||||
Cdma2000SectorID.h \
|
||||
Cdma2000HOStatus.h \
|
||||
Cdma2000HORequiredIndication.h \
|
||||
Cdma2000OneXSRVCCInfo.h \
|
||||
Cdma2000OneXMEID.h \
|
||||
Cdma2000OneXMSI.h \
|
||||
Cdma2000OneXPilot.h \
|
||||
Cdma2000OneXRAND.h \
|
||||
Cell-Size.h \
|
||||
CellType.h \
|
||||
CGI.h \
|
||||
CI.h \
|
||||
CNDomain.h \
|
||||
CSFallbackIndicator.h \
|
||||
CSG-Id.h \
|
||||
CSG-IdList.h \
|
||||
CSG-IdList-Item.h \
|
||||
COUNTvalue.h \
|
||||
CriticalityDiagnostics.h \
|
||||
CriticalityDiagnostics-IE-List.h \
|
||||
CriticalityDiagnostics-IE-Item.h \
|
||||
DataCodingScheme.h \
|
||||
DL-Forwarding.h \
|
||||
Direct-Forwarding-Path-Availability.h \
|
||||
E-RABToBeModifiedListBearerModReq.h \
|
||||
E-RABToBeModifiedItemBearerModReqIEs.h \
|
||||
E-RABToBeModifiedItemBearerModReq.h \
|
||||
E-RABReleaseListBearerRelComp.h \
|
||||
E-RABReleaseItemBearerRelCompIEs.h \
|
||||
E-RABReleaseItemBearerRelComp.h \
|
||||
E-RABSubjecttoDataForwardingList.h \
|
||||
E-RABDataForwardingList.h \
|
||||
E-RABDataForwardingItemIEs.h \
|
||||
E-RABDataForwardingItem.h \
|
||||
E-RABToBeSetupListCtxtSUReq.h \
|
||||
E-RABToBeSetupItemCtxtSUReqIEs.h \
|
||||
E-RABToBeSetupItemCtxtSUReq.h \
|
||||
E-RABSetupListBearerSURes.h \
|
||||
E-RABSetupItemBearerSUResIEs.h \
|
||||
E-RABSetupItemBearerSURes.h \
|
||||
E-RABFailedtoSetupListHOReqAck.h \
|
||||
E-RABFailedtoSetupItemHOReqAckIEs.h \
|
||||
E-RABFailedToSetupItemHOReqAck.h \
|
||||
E-RABToBeSetupListBearerSUReq.h \
|
||||
E-RABToBeSetupItemBearerSUReqIEs.h \
|
||||
E-RABToBeSetupItemBearerSUReq.h \
|
||||
E-RABAdmittedList.h \
|
||||
E-RABAdmittedItemIEs.h \
|
||||
E-RABAdmittedItem.h \
|
||||
E-RABToBeSwitchedDLList.h \
|
||||
E-RABToBeSwitchedDLListIEs.h \
|
||||
E-RABToBeSwitchedDLItem.h \
|
||||
E-RABToBeSwitchedULList.h \
|
||||
E-RABToBeSwitchedULItemIEs.h \
|
||||
E-RABToBeSwitchedULItem.h \
|
||||
E-RABModifyListBearerModRes.h \
|
||||
E-RABModifyItemBearerModResIEs.h \
|
||||
E-RABModifyItemBearerModRes.h \
|
||||
E-RABSetupListCtxtSURes.h \
|
||||
E-RABSetupListCtxtSUResIEs.h \
|
||||
E-RABSetupItemCtxtSURes.h \
|
||||
E-RABToBeSetupListHOReq.h \
|
||||
E-RABToBeSetupListHOReqIEs.h \
|
||||
E-RABToBeSetupItemHOReq.h \
|
||||
ECGIList.h \
|
||||
EmergencyAreaIDList.h \
|
||||
EmergencyAreaID.h \
|
||||
EmergencyAreaID-Broadcast.h \
|
||||
EmergencyAreaID-Broadcast-Item.h \
|
||||
CompletedCellinEAI.h \
|
||||
CompletedCellinEAI-Item.h \
|
||||
ENB-ID.h \
|
||||
GERAN-Cell-ID.h \
|
||||
Global-ENB-ID.h \
|
||||
ENB-StatusTransfer-TransparentContainer.h \
|
||||
ENB-UE-S1AP-ID.h \
|
||||
ENBname.h \
|
||||
ENBX2TLAs.h \
|
||||
EncryptionAlgorithms.h \
|
||||
EPLMNs.h \
|
||||
EventType.h \
|
||||
E-RAB-ID.h \
|
||||
E-RABInformationList.h \
|
||||
E-RABInformationListItem.h \
|
||||
E-RABList.h \
|
||||
E-RABItem.h \
|
||||
E-RABLevelQoSParameters.h \
|
||||
EUTRAN-CGI.h \
|
||||
ExtendedRNC-ID.h \
|
||||
ForbiddenInterRATs.h \
|
||||
ForbiddenTAs.h \
|
||||
ForbiddenTAs-Item.h \
|
||||
ForbiddenTACs.h \
|
||||
ForbiddenLAs.h \
|
||||
ForbiddenLAs-Item.h \
|
||||
ForbiddenLACs.h \
|
||||
GBR-QosInformation.h \
|
||||
GTP-TEID.h \
|
||||
GUMMEI.h \
|
||||
HandoverRestrictionList.h \
|
||||
HandoverType.h \
|
||||
HFN.h \
|
||||
HandoverNotify.h \
|
||||
Inter-SystemInformationTransferType.h \
|
||||
IMSI.h \
|
||||
IntegrityProtectionAlgorithms.h \
|
||||
InterfacesToTrace.h \
|
||||
LAC.h \
|
||||
LAI.h \
|
||||
LastVisitedCell-Item.h \
|
||||
LastVisitedEUTRANCellInformation.h \
|
||||
LastVisitedUTRANCellInformation.h \
|
||||
LastVisitedGERANCellInformation.h \
|
||||
L3-Information.h \
|
||||
MessageIdentifier.h \
|
||||
MMEname.h \
|
||||
MME-Group-ID.h \
|
||||
MME-Code.h \
|
||||
MME-UE-S1AP-ID.h \
|
||||
M-TMSI.h \
|
||||
MSClassmark2.h \
|
||||
MSClassmark3.h \
|
||||
NAS-PDU.h \
|
||||
NASSecurityParametersfromE-UTRAN.h \
|
||||
NASSecurityParameterstoE-UTRAN.h \
|
||||
NumberofBroadcastRequest.h \
|
||||
NumberOfBroadcasts.h \
|
||||
OldBSS-ToNewBSS-Information.h \
|
||||
OverloadAction.h \
|
||||
OverloadResponse.h \
|
||||
PagingDRX.h \
|
||||
PDCP-SN.h \
|
||||
PLMNidentity.h \
|
||||
Pre-emptionCapability.h \
|
||||
Pre-emptionVulnerability.h \
|
||||
PriorityLevel.h \
|
||||
QCI.h \
|
||||
ReceiveStatusofULPDCPSDUs.h \
|
||||
RelativeMMECapacity.h \
|
||||
RAC.h \
|
||||
RequestType.h \
|
||||
ResetType.h \
|
||||
ResetAll.h \
|
||||
RIMTransfer.h \
|
||||
RIMInformation.h \
|
||||
RIMRoutingAddress.h \
|
||||
ReportArea.h \
|
||||
RepetitionPeriod.h \
|
||||
RNC-ID.h \
|
||||
RRC-Container.h \
|
||||
RRC-Establishment-Cause.h \
|
||||
SecurityKey.h \
|
||||
SecurityContext.h \
|
||||
SerialNumber.h \
|
||||
SONInformation.h \
|
||||
SONInformationRequest.h \
|
||||
SONInformationReply.h \
|
||||
SONConfigurationTransfer.h \
|
||||
Source-ToTarget-TransparentContainer.h \
|
||||
SourceBSS-ToTargetBSS-TransparentContainer.h \
|
||||
SourceeNB-ID.h \
|
||||
SRVCCOperationPossible.h \
|
||||
SRVCCHOIndication.h \
|
||||
SourceeNB-ToTargeteNB-TransparentContainer.h \
|
||||
SourceRNC-ToTargetRNC-TransparentContainer.h \
|
||||
ServedGUMMEIs.h \
|
||||
ServedGUMMEIsItem.h \
|
||||
ServedGroupIDs.h \
|
||||
ServedMMECs.h \
|
||||
ServedPLMNs.h \
|
||||
SubscriberProfileIDforRFP.h \
|
||||
SupportedTAs.h \
|
||||
SupportedTAs-Item.h \
|
||||
S-TMSI.h \
|
||||
TAC.h \
|
||||
TAIListforWarning.h \
|
||||
TAIList.h \
|
||||
TAIItem.h \
|
||||
TAI.h \
|
||||
TAI-Broadcast.h \
|
||||
TAI-Broadcast-Item.h \
|
||||
CompletedCellinTAI.h \
|
||||
CompletedCellinTAI-Item.h \
|
||||
TBCD-STRING.h \
|
||||
TargetID.h \
|
||||
TargeteNB-ID.h \
|
||||
TargetRNC-ID.h \
|
||||
TargeteNB-ToSourceeNB-TransparentContainer.h \
|
||||
Target-ToSource-TransparentContainer.h \
|
||||
TargetRNC-ToSourceRNC-TransparentContainer.h \
|
||||
TargetBSS-ToSourceBSS-TransparentContainer.h \
|
||||
TimeToWait.h \
|
||||
Time-UE-StayedInCell.h \
|
||||
TransportLayerAddress.h \
|
||||
TraceActivation.h \
|
||||
TraceDepth.h \
|
||||
E-UTRAN-Trace-ID.h \
|
||||
TypeOfError.h \
|
||||
UEAggregateMaximumBitrate.h \
|
||||
UE-S1AP-IDs.h \
|
||||
UE-S1AP-ID-pair.h \
|
||||
UE-associatedLogicalS1-ConnectionListRes.h \
|
||||
UE-associatedLogicalS1-ConnectionListResAck.h \
|
||||
UE-associatedLogicalS1-ConnectionItem.h \
|
||||
UEIdentityIndexValue.h \
|
||||
UE-HistoryInformation.h \
|
||||
UEPagingID.h \
|
||||
UERadioCapability.h \
|
||||
UESecurityCapabilities.h \
|
||||
WarningAreaList.h \
|
||||
WarningType.h \
|
||||
WarningSecurityInfo.h \
|
||||
WarningMessageContents.h \
|
||||
X2TNLConfigurationInfo.h \
|
||||
S1AP-PDU.h \
|
||||
InitiatingMessage.h \
|
||||
SuccessfulOutcome.h \
|
||||
UnsuccessfulOutcome.h \
|
||||
HandoverRequired.h \
|
||||
HandoverCommand.h \
|
||||
HandoverPreparationFailure.h \
|
||||
HandoverRequest.h \
|
||||
HandoverRequestAcknowledge.h \
|
||||
HandoverFailure.h \
|
||||
HandoverNotify.h \
|
||||
PathSwitchRequest.h \
|
||||
PathSwitchRequestAcknowledge.h \
|
||||
PathSwitchRequestFailure.h \
|
||||
E-RABSetupRequest.h \
|
||||
E-RABSetupResponse.h \
|
||||
E-RABModifyRequest.h \
|
||||
E-RABModifyResponse.h \
|
||||
E-RABReleaseIndication.h \
|
||||
E-RABReleaseCommand.h \
|
||||
E-RABReleaseResponse.h \
|
||||
InitialContextSetupRequest.h \
|
||||
InitialContextSetupResponse.h \
|
||||
InitialContextSetupFailure.h \
|
||||
UEContextReleaseRequest.h \
|
||||
Paging.h \
|
||||
DownlinkNASTransport.h \
|
||||
InitialUEMessage.h \
|
||||
UplinkNASTransport.h \
|
||||
NASNonDeliveryIndication.h \
|
||||
HandoverCancel.h \
|
||||
HandoverCancelAcknowledge.h \
|
||||
Reset.h \
|
||||
ResetAcknowledge.h \
|
||||
S1SetupResponse.h \
|
||||
S1SetupRequest.h \
|
||||
S1SetupFailure.h \
|
||||
ErrorIndication.h \
|
||||
ENBConfigurationUpdate.h \
|
||||
ENBConfigurationUpdateAcknowledge.h \
|
||||
ENBConfigurationUpdateFailure.h \
|
||||
MMEConfigurationUpdate.h \
|
||||
MMEConfigurationUpdateAcknowledge.h \
|
||||
MMEConfigurationUpdateFailure.h \
|
||||
DownlinkS1cdma2000tunneling.h \
|
||||
UplinkS1cdma2000tunneling.h \
|
||||
UEContextModificationRequest.h \
|
||||
UEContextModificationResponse.h \
|
||||
UEContextModificationFailure.h \
|
||||
UECapabilityInfoIndication.h \
|
||||
UEContextReleaseCommand.h \
|
||||
UEContextReleaseComplete.h \
|
||||
ENBStatusTransfer.h \
|
||||
MMEStatusTransfer.h \
|
||||
DeactivateTrace.h \
|
||||
TraceStart.h \
|
||||
TraceFailureIndication.h \
|
||||
CellTrafficTrace.h \
|
||||
LocationReportingControl.h \
|
||||
LocationReportingFailureIndication.h \
|
||||
LocationReport.h \
|
||||
OverloadStart.h \
|
||||
OverloadStop.h \
|
||||
WriteReplaceWarningRequest.h \
|
||||
WriteReplaceWarningResponse.h \
|
||||
ENBDirectInformationTransfer.h \
|
||||
MMEDirectInformationTransfer.h \
|
||||
ENBConfigurationTransfer.h \
|
||||
MMEConfigurationTransfer.h \
|
||||
PrivateMessage.h \
|
||||
IE.h
|
||||
|
||||
ifdef UPDATE_RELEASE_9
|
||||
S1AP_ASN_MODULE_SOURCES += \
|
||||
KillResponse.o \
|
||||
KillRequest.o \
|
||||
Data-Forwarding-Not-Possible.o \
|
||||
DownlinkUEAssociatedLPPaTransport.o \
|
||||
UplinkUEAssociatedLPPaTransport.o \
|
||||
DownlinkNonUEAssociatedLPPaTransport.o \
|
||||
UplinkNonUEAssociatedLPPaTransport.o \
|
||||
TAI-Cancelled.o \
|
||||
TAI-Cancelled-Item.o \
|
||||
StratumLevel.o \
|
||||
SynchronizationStatus.o \
|
||||
TimeSynchronizationInfo.o \
|
||||
Routing-ID.o \
|
||||
PS-ServiceNotAvailable.o \
|
||||
LPPa-PDU.o \
|
||||
ExtendedRepetitionPeriod.o \
|
||||
EUTRANRoundTripDelayEstimationInfo.o \
|
||||
EmergencyAreaID-Cancelled.o \
|
||||
EmergencyAreaID-Cancelled-Item.o \
|
||||
CSGMembershipStatus.o \
|
||||
ConcurrentWarningMessageIndicator.o \
|
||||
CellID-Cancelled.o \
|
||||
CellID-Cancelled-Item.o \
|
||||
CellAccessMode.o \
|
||||
CancelledCellinEAI.o \
|
||||
CancelledCellinEAI-Item.o \
|
||||
CancelledCellinTAI.o \
|
||||
CancelledCellinTAI-Item.o \
|
||||
BroadcastCancelledAreaList.o
|
||||
|
||||
S1AP_ASN_MODULE_HEADERS += \
|
||||
BroadcastCancelledAreaList.h \
|
||||
CancelledCellinEAI.h \
|
||||
CancelledCellinEAI-Item.h \
|
||||
CancelledCellinTAI.h \
|
||||
CancelledCellinTAI-Item.h \
|
||||
CellAccessMode.h \
|
||||
CellID-Cancelled.h \
|
||||
CellID-Cancelled-Item.h \
|
||||
ConcurrentWarningMessageIndicator.h \
|
||||
CSGMembershipStatus.h \
|
||||
Data-Forwarding-Not-Possible.h \
|
||||
EmergencyAreaID-Cancelled.h \
|
||||
EmergencyAreaID-Cancelled-Item.h \
|
||||
E-RABList.h \
|
||||
EUTRANRoundTripDelayEstimationInfo.h \
|
||||
ExtendedRepetitionPeriod.h \
|
||||
LPPa-PDU.h \
|
||||
PS-ServiceNotAvailable.h \
|
||||
Routing-ID.h \
|
||||
StratumLevel.h \
|
||||
SynchronizationStatus.h \
|
||||
TimeSynchronizationInfo.h \
|
||||
TAI-Cancelled.h \
|
||||
TAI-Cancelled-Item.h \
|
||||
KillResponse.h \
|
||||
KillRequest.h \
|
||||
DownlinkUEAssociatedLPPaTransport.h \
|
||||
UplinkUEAssociatedLPPaTransport.h \
|
||||
DownlinkNonUEAssociatedLPPaTransport.h \
|
||||
UplinkNonUEAssociatedLPPaTransport.h
|
||||
endif
|
||||
|
||||
S1AP_ASN_MODULE_HEADERS+=ANY.h
|
||||
S1AP_ASN_MODULE_SOURCES+=ANY.o
|
||||
S1AP_ASN_MODULE_HEADERS+=BOOLEAN.h
|
||||
S1AP_ASN_MODULE_SOURCES+=BOOLEAN.o
|
||||
S1AP_ASN_MODULE_HEADERS+=INTEGER.h
|
||||
S1AP_ASN_MODULE_HEADERS+=NativeEnumerated.h
|
||||
S1AP_ASN_MODULE_SOURCES+=INTEGER.o
|
||||
S1AP_ASN_MODULE_HEADERS+=NULL.h
|
||||
S1AP_ASN_MODULE_SOURCES+=NULL.o
|
||||
S1AP_ASN_MODULE_SOURCES+=NativeEnumerated.o
|
||||
S1AP_ASN_MODULE_HEADERS+=NativeInteger.h
|
||||
S1AP_ASN_MODULE_SOURCES+=NativeInteger.o
|
||||
S1AP_ASN_MODULE_HEADERS+=OBJECT_IDENTIFIER.h
|
||||
S1AP_ASN_MODULE_SOURCES+=OBJECT_IDENTIFIER.o
|
||||
S1AP_ASN_MODULE_HEADERS+=PrintableString.h
|
||||
S1AP_ASN_MODULE_SOURCES+=PrintableString.o
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
|
||||
S1AP_ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.o
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_SET_OF.h
|
||||
S1AP_ASN_MODULE_SOURCES+=asn_SET_OF.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constr_CHOICE.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constr_CHOICE.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constr_SEQUENCE.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constr_SEQUENCE.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constr_SET_OF.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constr_SET_OF.o
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_application.h
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_system.h
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_codecs.h
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_internal.h
|
||||
S1AP_ASN_MODULE_HEADERS+=OCTET_STRING.h
|
||||
S1AP_ASN_MODULE_SOURCES+=OCTET_STRING.o
|
||||
S1AP_ASN_MODULE_HEADERS+=BIT_STRING.h
|
||||
S1AP_ASN_MODULE_SOURCES+=BIT_STRING.o
|
||||
S1AP_ASN_MODULE_SOURCES+=asn_codecs_prim.o
|
||||
S1AP_ASN_MODULE_HEADERS+=asn_codecs_prim.h
|
||||
S1AP_ASN_MODULE_HEADERS+=ber_tlv_length.h
|
||||
S1AP_ASN_MODULE_SOURCES+=ber_tlv_length.o
|
||||
S1AP_ASN_MODULE_HEADERS+=ber_tlv_tag.h
|
||||
S1AP_ASN_MODULE_SOURCES+=ber_tlv_tag.o
|
||||
S1AP_ASN_MODULE_HEADERS+=ber_decoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=ber_decoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=der_encoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=der_encoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constr_TYPE.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constr_TYPE.o
|
||||
S1AP_ASN_MODULE_HEADERS+=constraints.h
|
||||
S1AP_ASN_MODULE_SOURCES+=constraints.o
|
||||
S1AP_ASN_MODULE_HEADERS+=xer_support.h
|
||||
S1AP_ASN_MODULE_SOURCES+=xer_support.o
|
||||
S1AP_ASN_MODULE_HEADERS+=xer_decoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=xer_decoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=xer_encoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=xer_encoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=per_support.h
|
||||
S1AP_ASN_MODULE_SOURCES+=per_support.o
|
||||
S1AP_ASN_MODULE_HEADERS+=per_decoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=per_decoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=per_encoder.h
|
||||
S1AP_ASN_MODULE_SOURCES+=per_encoder.o
|
||||
S1AP_ASN_MODULE_HEADERS+=per_opentype.h
|
||||
S1AP_ASN_MODULE_SOURCES+=per_opentype.o
|
||||
@@ -1,31 +0,0 @@
|
||||
SUBDIRS = ./MESSAGES/ .
|
||||
|
||||
AM_CFLAGS = \
|
||||
@ADD_CFLAGS@ \
|
||||
-I$(top_builddir)/S1AP \
|
||||
-I$(top_builddir)/S1AP/MESSAGES \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_srcdir)/SCTP \
|
||||
-I$(top_srcdir)/UTILS
|
||||
|
||||
noinst_LTLIBRARIES = libs1ap.la
|
||||
libs1ap_la_LDFLAGS = -all-static
|
||||
libs1ap_la_LIBADD = ./MESSAGES/libs1apmessages.la
|
||||
|
||||
libs1ap_la_SOURCES = \
|
||||
s1ap_common.h s1ap_common.c \
|
||||
s1ap_eNB_decoder.h s1ap_eNB_decoder.c \
|
||||
s1ap_eNB_encoder.h s1ap_eNB_encoder.c \
|
||||
s1ap_eNB_handlers.h s1ap_eNB_handlers.c \
|
||||
s1ap_mme_encoder.h s1ap_mme_encoder.c \
|
||||
s1ap_mme_decoder.h s1ap_mme_decoder.c \
|
||||
s1ap_mme_handlers.h s1ap_mme_handlers.c \
|
||||
s1ap_mme.h s1ap_mme.c \
|
||||
$(top_builddir)/S1AP/s1ap_decoder.c \
|
||||
$(top_builddir)/S1AP/s1ap_encoder.c \
|
||||
$(top_builddir)/S1AP/s1ap_ies_defs.h
|
||||
|
||||
clean-local:
|
||||
rm -f $(top_builddir)/S1AP/s1ap_ies_defs.h
|
||||
rm -f $(top_builddir)/S1AP/s1ap_decoder.c
|
||||
rm -f $(top_builddir)/S1AP/s1ap_encoder.c
|
||||
@@ -1,758 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = S1AP
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depcomp
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libs1ap_la_DEPENDENCIES = ./MESSAGES/libs1apmessages.la
|
||||
am_libs1ap_la_OBJECTS = s1ap_common.lo s1ap_eNB_decoder.lo \
|
||||
s1ap_eNB_encoder.lo s1ap_eNB_handlers.lo s1ap_mme_encoder.lo \
|
||||
s1ap_mme_decoder.lo s1ap_mme_handlers.lo s1ap_mme.lo \
|
||||
s1ap_decoder.lo s1ap_encoder.lo
|
||||
libs1ap_la_OBJECTS = $(am_libs1ap_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
libs1ap_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libs1ap_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libs1ap_la_SOURCES)
|
||||
DIST_SOURCES = $(libs1ap_la_SOURCES)
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ADD_CFLAGS = @ADD_CFLAGS@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = \
|
||||
@ADD_CFLAGS@ \
|
||||
-I$(top_builddir)/S1AP \
|
||||
-I$(top_builddir)/S1AP/MESSAGES \
|
||||
-I$(top_srcdir)/INTERTASK_INTERFACE \
|
||||
-I$(top_srcdir)/SCTP \
|
||||
-I$(top_srcdir)/UTILS
|
||||
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASN1C_CHECK = @ASN1C_CHECK@
|
||||
ASN1DIR = @ASN1DIR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIGURE_DEPENDS = @CONFIGURE_DEPENDS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PDFLATEX = @PDFLATEX@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = ./MESSAGES/ .
|
||||
noinst_LTLIBRARIES = libs1ap.la
|
||||
libs1ap_la_LDFLAGS = -all-static
|
||||
libs1ap_la_LIBADD = ./MESSAGES/libs1apmessages.la
|
||||
libs1ap_la_SOURCES = \
|
||||
s1ap_common.h s1ap_common.c \
|
||||
s1ap_eNB_decoder.h s1ap_eNB_decoder.c \
|
||||
s1ap_eNB_encoder.h s1ap_eNB_encoder.c \
|
||||
s1ap_eNB_handlers.h s1ap_eNB_handlers.c \
|
||||
s1ap_mme_encoder.h s1ap_mme_encoder.c \
|
||||
s1ap_mme_decoder.h s1ap_mme_decoder.c \
|
||||
s1ap_mme_handlers.h s1ap_mme_handlers.c \
|
||||
s1ap_mme.h s1ap_mme.c \
|
||||
$(top_builddir)/S1AP/s1ap_decoder.c \
|
||||
$(top_builddir)/S1AP/s1ap_encoder.c \
|
||||
$(top_builddir)/S1AP/s1ap_ies_defs.h
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu S1AP/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu S1AP/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
libs1ap.la: $(libs1ap_la_OBJECTS) $(libs1ap_la_DEPENDENCIES) $(EXTRA_libs1ap_la_DEPENDENCIES)
|
||||
$(AM_V_CCLD)$(libs1ap_la_LINK) $(libs1ap_la_OBJECTS) $(libs1ap_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_common.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_decoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_eNB_decoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_eNB_encoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_eNB_handlers.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_encoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_mme.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_mme_decoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_mme_encoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s1ap_mme_handlers.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
s1ap_decoder.lo: $(top_builddir)/S1AP/s1ap_decoder.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT s1ap_decoder.lo -MD -MP -MF $(DEPDIR)/s1ap_decoder.Tpo -c -o s1ap_decoder.lo `test -f '$(top_builddir)/S1AP/s1ap_decoder.c' || echo '$(srcdir)/'`$(top_builddir)/S1AP/s1ap_decoder.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/s1ap_decoder.Tpo $(DEPDIR)/s1ap_decoder.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_builddir)/S1AP/s1ap_decoder.c' object='s1ap_decoder.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o s1ap_decoder.lo `test -f '$(top_builddir)/S1AP/s1ap_decoder.c' || echo '$(srcdir)/'`$(top_builddir)/S1AP/s1ap_decoder.c
|
||||
|
||||
s1ap_encoder.lo: $(top_builddir)/S1AP/s1ap_encoder.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT s1ap_encoder.lo -MD -MP -MF $(DEPDIR)/s1ap_encoder.Tpo -c -o s1ap_encoder.lo `test -f '$(top_builddir)/S1AP/s1ap_encoder.c' || echo '$(srcdir)/'`$(top_builddir)/S1AP/s1ap_encoder.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/s1ap_encoder.Tpo $(DEPDIR)/s1ap_encoder.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_builddir)/S1AP/s1ap_encoder.c' object='s1ap_encoder.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o s1ap_encoder.lo `test -f '$(top_builddir)/S1AP/s1ap_encoder.c' || echo '$(srcdir)/'`$(top_builddir)/S1AP/s1ap_encoder.c
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
cscopelist-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local \
|
||||
clean-noinstLTLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
|
||||
cscopelist-recursive ctags-recursive install-am install-strip \
|
||||
tags-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic clean-libtool \
|
||||
clean-local clean-noinstLTLIBRARIES cscopelist \
|
||||
cscopelist-recursive ctags ctags-recursive distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
|
||||
|
||||
clean-local:
|
||||
rm -f $(top_builddir)/S1AP/s1ap_ies_defs.h
|
||||
rm -f $(top_builddir)/S1AP/s1ap_decoder.c
|
||||
rm -f $(top_builddir)/S1AP/s1ap_encoder.c
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,9 +0,0 @@
|
||||
S1AP_OBJS = $(OPENAIR2_DIR)/S1AP/s1ap_eNB.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_common.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_encoder.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_decoder.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_eNB_decoder.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_eNB_encoder.o
|
||||
S1AP_OBJS += $(OPENAIR2_DIR)/S1AP/s1ap_eNB_handlers.o
|
||||
|
||||
S1AP_Incl = -I$(OPENAIR2_DIR)/S1AP -I$(OPENAIR2_DIR)/S1AP/MESSAGES
|
||||
@@ -1,163 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
/*! \file s1ap_common.c
|
||||
* \brief s1ap procedures for both eNB and MME
|
||||
* \author Sebastien ROUX <sebastien.roux@eurecom.fr>
|
||||
* \date 2012
|
||||
* \version 0.1
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "S1AP-PDU.h"
|
||||
|
||||
#include "S1SetupRequest.h"
|
||||
#include "UplinkNASTransport.h"
|
||||
|
||||
#include "s1ap_common.h"
|
||||
|
||||
int asn_debug = 0;
|
||||
int asn1_xer_print = 0;
|
||||
|
||||
ssize_t s1ap_generate_initiating_message(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr) {
|
||||
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage.procedureCode = procedureCode;
|
||||
pdu.choice.initiatingMessage.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
|
||||
|
||||
if (asn1_xer_print)
|
||||
xer_fprint(stdout,&asn_DEF_S1AP_PDU,(void*)&pdu);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu, (void**)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
return encoded;
|
||||
}
|
||||
|
||||
ssize_t s1ap_generate_successfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr) {
|
||||
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_successfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu, (void**)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
ssize_t s1ap_generate_unsuccessfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr) {
|
||||
|
||||
S1AP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
|
||||
memset(&pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
pdu.present = S1AP_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_S1AP_PDU, 0, &pdu, (void**)buffer)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
IE_t *s1ap_new_ie(
|
||||
ProtocolIE_ID_t id,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type,
|
||||
void *sptr) {
|
||||
|
||||
IE_t *buff;
|
||||
|
||||
if ((buff = malloc(sizeof(IE_t))) == NULL) {
|
||||
// Possible error on malloc
|
||||
return NULL;
|
||||
}
|
||||
memset((void*)buff, 0, sizeof(IE_t));
|
||||
|
||||
buff->id = id;
|
||||
buff->criticality = criticality;
|
||||
|
||||
ANY_fromType_aper(&buff->value, type, sptr);
|
||||
|
||||
if (asn1_xer_print)
|
||||
if (xer_fprint(stdout, &asn_DEF_IE, buff) < 0) {
|
||||
free(buff);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buff;
|
||||
}
|
||||
|
||||
void s1ap_handle_criticality(e_Criticality criticality) {
|
||||
|
||||
}
|
||||
@@ -1,473 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Eurecom OpenAirInterface
|
||||
Copyright(c) 1999 - 2012 Eurecom
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope 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, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information
|
||||
Openair Admin: openair_admin@eurecom.fr
|
||||
Openair Tech : openair_tech@eurecom.fr
|
||||
Forums : http://forums.eurecom.fr/openairinterface
|
||||
Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
|
||||
06410 Biot FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#if HAVE_CONFIG_H_
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "Criticality.h"
|
||||
#include "Presence.h"
|
||||
#include "PrivateIE-ID.h"
|
||||
#include "ProcedureCode.h"
|
||||
#include "ProtocolExtensionID.h"
|
||||
#include "ProtocolIE-ID.h"
|
||||
#include "TriggeringMessage.h"
|
||||
#include "AllocationAndRetentionPriority.h"
|
||||
#include "Bearers-SubjectToStatusTransfer-List.h"
|
||||
#include "Bearers-SubjectToStatusTransfer-Item.h"
|
||||
#include "BitRate.h"
|
||||
#include "BPLMNs.h"
|
||||
#include "BroadcastCompletedAreaList.h"
|
||||
#include "Cause.h"
|
||||
#include "CauseMisc.h"
|
||||
#include "CauseProtocol.h"
|
||||
#include "CauseRadioNetwork.h"
|
||||
#include "CauseTransport.h"
|
||||
#include "CauseNas.h"
|
||||
#include "CellIdentity.h"
|
||||
#include "CellID-Broadcast.h"
|
||||
#include "CellID-Broadcast-Item.h"
|
||||
#include "Cdma2000PDU.h"
|
||||
#include "Cdma2000RATType.h"
|
||||
#include "Cdma2000SectorID.h"
|
||||
#include "Cdma2000HOStatus.h"
|
||||
#include "Cdma2000HORequiredIndication.h"
|
||||
#include "Cdma2000OneXSRVCCInfo.h"
|
||||
#include "Cdma2000OneXMEID.h"
|
||||
#include "Cdma2000OneXMSI.h"
|
||||
#include "Cdma2000OneXPilot.h"
|
||||
#include "Cdma2000OneXRAND.h"
|
||||
#include "Cell-Size.h"
|
||||
#include "CellType.h"
|
||||
#include "CGI.h"
|
||||
#include "CI.h"
|
||||
#include "CNDomain.h"
|
||||
#include "CSFallbackIndicator.h"
|
||||
#include "CSG-Id.h"
|
||||
#include "CSG-IdList.h"
|
||||
#include "CSG-IdList-Item.h"
|
||||
#include "COUNTvalue.h"
|
||||
#include "CriticalityDiagnostics.h"
|
||||
#include "CriticalityDiagnostics-IE-List.h"
|
||||
#include "CriticalityDiagnostics-IE-Item.h"
|
||||
#include "DataCodingScheme.h"
|
||||
#include "DL-Forwarding.h"
|
||||
#include "Direct-Forwarding-Path-Availability.h"
|
||||
#include "ECGIList.h"
|
||||
#include "EmergencyAreaIDList.h"
|
||||
#include "EmergencyAreaID.h"
|
||||
#include "EmergencyAreaID-Broadcast.h"
|
||||
#include "EmergencyAreaID-Broadcast-Item.h"
|
||||
#include "CompletedCellinEAI.h"
|
||||
#include "CompletedCellinEAI-Item.h"
|
||||
#include "ENB-ID.h"
|
||||
#include "GERAN-Cell-ID.h"
|
||||
#include "Global-ENB-ID.h"
|
||||
#include "ENB-StatusTransfer-TransparentContainer.h"
|
||||
#include "ENB-UE-S1AP-ID.h"
|
||||
#include "ENBname.h"
|
||||
#include "ENBX2TLAs.h"
|
||||
#include "EncryptionAlgorithms.h"
|
||||
#include "EPLMNs.h"
|
||||
#include "EventType.h"
|
||||
#include "E-RAB-ID.h"
|
||||
#include "E-RABInformationList.h"
|
||||
#include "E-RABInformationListItem.h"
|
||||
#include "E-RABList.h"
|
||||
#include "E-RABItem.h"
|
||||
#include "E-RABLevelQoSParameters.h"
|
||||
#include "EUTRAN-CGI.h"
|
||||
#include "ExtendedRNC-ID.h"
|
||||
#include "ForbiddenInterRATs.h"
|
||||
#include "ForbiddenTAs.h"
|
||||
#include "ForbiddenTAs-Item.h"
|
||||
#include "ForbiddenTACs.h"
|
||||
#include "ForbiddenLAs.h"
|
||||
#include "ForbiddenLAs-Item.h"
|
||||
#include "ForbiddenLACs.h"
|
||||
#include "GBR-QosInformation.h"
|
||||
#include "GTP-TEID.h"
|
||||
#include "GUMMEI.h"
|
||||
#include "HandoverRestrictionList.h"
|
||||
#include "HandoverType.h"
|
||||
#include "HFN.h"
|
||||
#include "IMSI.h"
|
||||
#include "IntegrityProtectionAlgorithms.h"
|
||||
#include "InterfacesToTrace.h"
|
||||
#include "LAC.h"
|
||||
#include "LAI.h"
|
||||
#include "LastVisitedCell-Item.h"
|
||||
#include "LastVisitedEUTRANCellInformation.h"
|
||||
#include "LastVisitedUTRANCellInformation.h"
|
||||
#include "LastVisitedGERANCellInformation.h"
|
||||
#include "L3-Information.h"
|
||||
#include "MessageIdentifier.h"
|
||||
#include "MMEname.h"
|
||||
#include "MME-Group-ID.h"
|
||||
#include "MME-Code.h"
|
||||
#include "MME-UE-S1AP-ID.h"
|
||||
#include "M-TMSI.h"
|
||||
#include "MSClassmark2.h"
|
||||
#include "MSClassmark3.h"
|
||||
#include "NAS-PDU.h"
|
||||
#include "NASSecurityParametersfromE-UTRAN.h"
|
||||
#include "NASSecurityParameterstoE-UTRAN.h"
|
||||
#include "NumberofBroadcastRequest.h"
|
||||
#include "NumberOfBroadcasts.h"
|
||||
#include "OldBSS-ToNewBSS-Information.h"
|
||||
#include "OverloadAction.h"
|
||||
#include "OverloadResponse.h"
|
||||
#include "PagingDRX.h"
|
||||
#include "PDCP-SN.h"
|
||||
#include "PLMNidentity.h"
|
||||
#include "Pre-emptionCapability.h"
|
||||
#include "Pre-emptionVulnerability.h"
|
||||
#include "PriorityLevel.h"
|
||||
#include "QCI.h"
|
||||
#include "ReceiveStatusofULPDCPSDUs.h"
|
||||
#include "RelativeMMECapacity.h"
|
||||
#include "RAC.h"
|
||||
#include "RequestType.h"
|
||||
#include "RIMTransfer.h"
|
||||
#include "RIMInformation.h"
|
||||
#include "RIMRoutingAddress.h"
|
||||
#include "ReportArea.h"
|
||||
#include "RepetitionPeriod.h"
|
||||
#include "RNC-ID.h"
|
||||
#include "RRC-Container.h"
|
||||
#include "RRC-Establishment-Cause.h"
|
||||
#include "SecurityKey.h"
|
||||
#include "SecurityContext.h"
|
||||
#include "SerialNumber.h"
|
||||
#include "SONInformation.h"
|
||||
#include "SONInformationRequest.h"
|
||||
#include "SONInformationReply.h"
|
||||
#include "SONConfigurationTransfer.h"
|
||||
#include "Source-ToTarget-TransparentContainer.h"
|
||||
#include "SourceBSS-ToTargetBSS-TransparentContainer.h"
|
||||
#include "SourceeNB-ID.h"
|
||||
#include "SRVCCOperationPossible.h"
|
||||
#include "SRVCCHOIndication.h"
|
||||
#include "SourceeNB-ToTargeteNB-TransparentContainer.h"
|
||||
#include "SourceRNC-ToTargetRNC-TransparentContainer.h"
|
||||
#include "ServedGUMMEIs.h"
|
||||
#include "ServedGUMMEIsItem.h"
|
||||
#include "ServedGroupIDs.h"
|
||||
#include "ServedMMECs.h"
|
||||
#include "ServedPLMNs.h"
|
||||
#include "SubscriberProfileIDforRFP.h"
|
||||
#include "SupportedTAs.h"
|
||||
#include "SupportedTAs-Item.h"
|
||||
#include "S-TMSI.h"
|
||||
#include "TAC.h"
|
||||
#include "TAIItem.h"
|
||||
#include "TAIList.h"
|
||||
#include "TAIListforWarning.h"
|
||||
#include "TAI.h"
|
||||
#include "TAI-Broadcast.h"
|
||||
#include "TAI-Broadcast-Item.h"
|
||||
#include "CompletedCellinTAI.h"
|
||||
#include "CompletedCellinTAI-Item.h"
|
||||
#include "TBCD-STRING.h"
|
||||
#include "TargetID.h"
|
||||
#include "TargeteNB-ID.h"
|
||||
#include "TargetRNC-ID.h"
|
||||
#include "TargeteNB-ToSourceeNB-TransparentContainer.h"
|
||||
#include "Target-ToSource-TransparentContainer.h"
|
||||
#include "TargetRNC-ToSourceRNC-TransparentContainer.h"
|
||||
#include "TargetBSS-ToSourceBSS-TransparentContainer.h"
|
||||
#include "TimeToWait.h"
|
||||
#include "Time-UE-StayedInCell.h"
|
||||
#include "TransportLayerAddress.h"
|
||||
#include "TraceActivation.h"
|
||||
#include "TraceDepth.h"
|
||||
#include "E-UTRAN-Trace-ID.h"
|
||||
#include "TypeOfError.h"
|
||||
#include "UEAggregateMaximumBitrate.h"
|
||||
#include "UE-S1AP-IDs.h"
|
||||
#include "UE-S1AP-ID-pair.h"
|
||||
#include "UE-associatedLogicalS1-ConnectionItem.h"
|
||||
#include "UEIdentityIndexValue.h"
|
||||
#include "UE-HistoryInformation.h"
|
||||
#include "UEPagingID.h"
|
||||
#include "UERadioCapability.h"
|
||||
#include "UESecurityCapabilities.h"
|
||||
#include "WarningAreaList.h"
|
||||
#include "WarningType.h"
|
||||
#include "WarningSecurityInfo.h"
|
||||
#include "WarningMessageContents.h"
|
||||
#include "X2TNLConfigurationInfo.h"
|
||||
#include "S1AP-PDU.h"
|
||||
#include "InitiatingMessage.h"
|
||||
#include "SuccessfulOutcome.h"
|
||||
#include "UnsuccessfulOutcome.h"
|
||||
#include "HandoverRequired.h"
|
||||
#include "HandoverCommand.h"
|
||||
#include "HandoverNotify.h"
|
||||
#include "HandoverPreparationFailure.h"
|
||||
#include "HandoverRequest.h"
|
||||
#include "HandoverRequestAcknowledge.h"
|
||||
#include "HandoverFailure.h"
|
||||
#include "PathSwitchRequest.h"
|
||||
#include "PathSwitchRequestAcknowledge.h"
|
||||
#include "PathSwitchRequestFailure.h"
|
||||
#include "E-RABSetupRequest.h"
|
||||
#include "E-RABSetupResponse.h"
|
||||
#include "E-RABModifyRequest.h"
|
||||
#include "E-RABModifyResponse.h"
|
||||
#include "E-RABReleaseIndication.h"
|
||||
#include "E-RABReleaseCommand.h"
|
||||
#include "E-RABReleaseResponse.h"
|
||||
#include "InitialContextSetupRequest.h"
|
||||
#include "InitialContextSetupResponse.h"
|
||||
#include "InitialContextSetupFailure.h"
|
||||
#include "UEContextReleaseRequest.h"
|
||||
#include "Paging.h"
|
||||
#include "DownlinkNASTransport.h"
|
||||
#include "InitialUEMessage.h"
|
||||
#include "UplinkNASTransport.h"
|
||||
#include "NASNonDeliveryIndication.h"
|
||||
#include "HandoverCancel.h"
|
||||
#include "HandoverCancelAcknowledge.h"
|
||||
#include "Reset.h"
|
||||
#include "ResetType.h"
|
||||
#include "ResetAcknowledge.h"
|
||||
#include "S1SetupResponse.h"
|
||||
#include "S1SetupRequest.h"
|
||||
#include "S1SetupFailure.h"
|
||||
#include "ErrorIndication.h"
|
||||
#include "ENBConfigurationUpdate.h"
|
||||
#include "ENBConfigurationUpdateAcknowledge.h"
|
||||
#include "ENBConfigurationUpdateFailure.h"
|
||||
#include "MMEConfigurationUpdate.h"
|
||||
#include "MMEConfigurationUpdateAcknowledge.h"
|
||||
#include "MMEConfigurationUpdateFailure.h"
|
||||
#include "DownlinkS1cdma2000tunneling.h"
|
||||
#include "UplinkS1cdma2000tunneling.h"
|
||||
#include "UEContextModificationRequest.h"
|
||||
#include "UEContextModificationResponse.h"
|
||||
#include "UEContextModificationFailure.h"
|
||||
#include "UECapabilityInfoIndication.h"
|
||||
#include "UEContextReleaseCommand.h"
|
||||
#include "UEContextReleaseComplete.h"
|
||||
#include "ENBStatusTransfer.h"
|
||||
#include "MMEStatusTransfer.h"
|
||||
#include "DeactivateTrace.h"
|
||||
#include "TraceStart.h"
|
||||
#include "TraceFailureIndication.h"
|
||||
#include "CellTrafficTrace.h"
|
||||
#include "LocationReportingControl.h"
|
||||
#include "LocationReportingFailureIndication.h"
|
||||
#include "LocationReport.h"
|
||||
#include "OverloadStart.h"
|
||||
#include "OverloadStop.h"
|
||||
#include "WriteReplaceWarningRequest.h"
|
||||
#include "WriteReplaceWarningResponse.h"
|
||||
#include "ENBDirectInformationTransfer.h"
|
||||
#include "MMEDirectInformationTransfer.h"
|
||||
#include "ENBConfigurationTransfer.h"
|
||||
#include "MMEConfigurationTransfer.h"
|
||||
#include "PrivateMessage.h"
|
||||
#include "Inter-SystemInformationTransferType.h"
|
||||
#include "E-RABReleaseItemBearerRelComp.h"
|
||||
#include "E-RABToBeSwitchedDLList.h"
|
||||
#include "E-RABToBeSwitchedDLItem.h"
|
||||
#include "E-RABToBeSwitchedULList.h"
|
||||
#include "E-RABToBeSwitchedULItem.h"
|
||||
#include "E-RABToBeSetupListBearerSUReq.h"
|
||||
#include "E-RABToBeSetupItemBearerSUReq.h"
|
||||
#include "E-RABDataForwardingList.h"
|
||||
#include "E-RABDataForwardingItem.h"
|
||||
#include "E-RABToBeSetupListHOReq.h"
|
||||
#include "E-RABToBeSetupItemHOReq.h"
|
||||
#include "E-RABAdmittedList.h"
|
||||
#include "E-RABAdmittedItem.h"
|
||||
#include "E-RABFailedtoSetupListHOReqAck.h"
|
||||
#include "E-RABToBeSetupItemCtxtSUReq.h"
|
||||
#include "E-RABToBeSetupListCtxtSUReq.h"
|
||||
#include "E-RABSetupItemBearerSURes.h"
|
||||
#include "E-RABSetupListBearerSURes.h"
|
||||
#include "E-RABSetupItemCtxtSURes.h"
|
||||
#include "E-RABSetupListCtxtSURes.h"
|
||||
#include "E-RABReleaseListBearerRelComp.h"
|
||||
#include "E-RABModifyItemBearerModRes.h"
|
||||
#include "E-RABModifyListBearerModRes.h"
|
||||
#include "E-RABFailedToSetupItemHOReqAck.h"
|
||||
#include "E-RABFailedtoSetupListHOReqAck.h"
|
||||
#include "E-RABToBeModifiedItemBearerModReq.h"
|
||||
#include "E-RABToBeModifiedListBearerModReq.h"
|
||||
#include "UE-associatedLogicalS1-ConnectionListResAck.h"
|
||||
#include "IE.h"
|
||||
|
||||
#if defined (UPDATE_RELEASE_9)
|
||||
# include "BroadcastCancelledAreaList.h"
|
||||
# include "CancelledCellinEAI.h"
|
||||
# include "CancelledCellinEAI-Item.h"
|
||||
# include "CancelledCellinTAI.h"
|
||||
# include "CancelledCellinTAI-Item.h"
|
||||
# include "CellAccessMode.h"
|
||||
# include "CellID-Cancelled.h"
|
||||
# include "CellID-Cancelled-Item.h"
|
||||
# include "ConcurrentWarningMessageIndicator.h"
|
||||
# include "CSGMembershipStatus.h"
|
||||
# include "Data-Forwarding-Not-Possible.h"
|
||||
# include "EmergencyAreaID-Cancelled.h"
|
||||
# include "EmergencyAreaID-Cancelled-Item.h"
|
||||
# include "E-RABList.h"
|
||||
# include "EUTRANRoundTripDelayEstimationInfo.h"
|
||||
# include "ExtendedRepetitionPeriod.h"
|
||||
# include "LPPa-PDU.h"
|
||||
# include "PS-ServiceNotAvailable.h"
|
||||
# include "Routing-ID.h"
|
||||
# include "StratumLevel.h"
|
||||
# include "SynchronizationStatus.h"
|
||||
# include "TimeSynchronizationInfo.h"
|
||||
# include "TAI-Cancelled.h"
|
||||
# include "TAI-Cancelled-Item.h"
|
||||
# include "KillRequest.h"
|
||||
# include "KillResponse.h"
|
||||
# include "DownlinkUEAssociatedLPPaTransport.h"
|
||||
# include "UplinkUEAssociatedLPPaTransport.h"
|
||||
# include "DownlinkNonUEAssociatedLPPaTransport.h"
|
||||
# include "UplinkNonUEAssociatedLPPaTransport.h"
|
||||
#endif /* (UPDATE_RELEASE_9) */
|
||||
|
||||
#ifndef S1AP_COMMON_H_
|
||||
#define S1AP_COMMON_H_
|
||||
|
||||
/** @defgroup _s1ap_impl_ S1AP Layer Reference Implementation
|
||||
* @ingroup _ref_implementation_
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Checking version of ASN1C compiler */
|
||||
#if (ASN1C_ENVIRONMENT_VERSION < 923)
|
||||
# error "You are compiling s1ap with the wrong version of ASN1C"
|
||||
#endif
|
||||
|
||||
#define S1AP_PORT 36412
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
extern int asn_debug;
|
||||
extern int asn1_xer_print;
|
||||
|
||||
#if defined(ENB_MODE)
|
||||
# include "log.h"
|
||||
# define S1AP_ERROR(x, args...) LOG_E(S1AP, x, ##args)
|
||||
# define S1AP_WARN(x, args...) LOG_W(S1AP, x, ##args)
|
||||
# define S1AP_DEBUG(x, args...) LOG_D(S1AP, x, ##args)
|
||||
#else
|
||||
# define S1AP_ERROR(x, args...) do { fprintf(stdout, "[S1AP][E]"x, ##args); } while(0)
|
||||
# define S1AP_WARN(x, args...) do { fprintf(stdout, "[S1AP][W]"x, ##args); } while(0)
|
||||
# define S1AP_DEBUG(x, args...) do { fprintf(stdout, "[S1AP][D]"x, ##args); } while(0)
|
||||
#endif
|
||||
|
||||
//Forward declaration
|
||||
struct s1ap_message_s;
|
||||
|
||||
/** \brief Function callback prototype.
|
||||
**/
|
||||
typedef int (*s1ap_message_decoded_callback)(
|
||||
uint32_t assocId,
|
||||
uint32_t stream,
|
||||
struct s1ap_message_s *message);
|
||||
|
||||
/** \brief Encode a successfull outcome message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
ssize_t s1ap_generate_successfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
|
||||
/** \brief Encode an initiating message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
ssize_t s1ap_generate_initiating_message(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
|
||||
/** \brief Encode an unsuccessfull outcome message
|
||||
\param buffer pointer to buffer in which data will be encoded
|
||||
\param length pointer to the length of buffer
|
||||
\param procedureCode Procedure code for the message
|
||||
\param criticality Criticality of the message
|
||||
\param td ASN1C type descriptor of the sptr
|
||||
\param sptr Deferenced pointer to the structure to encode
|
||||
@returns size in bytes encded on success or 0 on failure
|
||||
**/
|
||||
ssize_t s1ap_generate_unsuccessfull_outcome(
|
||||
uint8_t **buffer,
|
||||
uint32_t *length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td,
|
||||
void *sptr);
|
||||
|
||||
/** \brief Generate a new IE
|
||||
\param id Protocol ie id of the IE
|
||||
\param criticality Criticality of the IE
|
||||
\param type ASN1 type descriptor of the IE value
|
||||
\param sptr Structure to be encoded in the value field
|
||||
@returns a pointer to the newly created IE structure or NULL in case of failure
|
||||
**/
|
||||
IE_t *s1ap_new_ie(ProtocolIE_ID_t id,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type,
|
||||
void *sptr);
|
||||
|
||||
/** \brief Handle criticality
|
||||
\param criticality Criticality of the IE
|
||||
@returns void
|
||||
**/
|
||||
void s1ap_handle_criticality(e_Criticality criticality);
|
||||
|
||||
#endif /* S1AP_COMMON_H_ */
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user