\begin{changebar}
\subsection{\header{Position}}
\label{sec:Position}

This general header field specifies the geographic position of the UA.
As a request header, it indicates the geographic position of the UA
issuing the request. As a response header, it {\MAY} be used by a
registrar to indicate the UA's approximate location to the UA.

An outbound proxy {\MAY} insert or replace this header information if it
confident that it has more accurate information about the position of
the UA.

\motivation{This header field may be useful for emergency calls.  In
some jurisdictions, provision of such information may be required by law
for some types of end systems.  However, this information can easily be
forged if provided by the end system.

The header field definition only applies to terminals on Earth or close
earth orbit.  There are other mechanisms for providing geographic
information, for example, based on DNS (RFC 1876 \cite{rfc1876}), but
they are not widely deployed and may not work well with devices attached
to the network via modems or for mobile devices.  This header is
compatible with the information contained in ITU-T Q.763 for ISUP 2000,
but currently does not contain more detailed shape information.

Note that having the outbound proxy replace the position information
incurs some risk that, for example, the accurate information provided by
a device attached via a wireless LAN may be overwritten by less accurate
information.
}

Note that provision of this information has privacy implications. Thus,
a UA {\MUST} provide this information in emergency calls and {\MUST} make
it a user-configurable option whether to provide this information for
other calls, with the default of not including this information.

\motivation{Use of this information for purposes other than emergency
response has been proposed, for example to ascertain whether a mobile
caller is within the geographic scope of a particular jurisdiction.}

\begin{syntax}
Position & = & "Position" ":" \\
         &   & [longitude-param] [latitude-param] [altitude-param]\\
         &   & [horizpre-param] [vertpre-param] [confidence-param]\\
         &   & [source-param]\\
longitude-param  & = & ";" "longitude"  "=" real\\
latitude-param   & = & ";" "latitude"   "=" real\\
altitude-param   & = & ";" "altitude"   "=" real\\
horizpre-param   & = & ";" "horiz-pre"  "=" real\\
vertpre-param    & = & ";" "vert-pre"   "=" real\\
confidence-param & = & ";" "confidence" "=" real\\
source-param     & = & ";" "source"     "=" source-type\\
source-type      & = & "user" $|$ "user-verified" $|$ \\
                 &   & "user-failed" $|$ "proxy"\\
real             & = & ["+" $|$ "-"] 1*DIGIT ["." *DIGIT]\\
\end{syntax}

Values for latitude and longitude shall be expressed as decimal
fractions of degrees. Whole degrees of latitude shall be represented
by a two-digit decimal number ranging from 0 through 90. Whole
degrees of longitude shall be represented by a decimal number ranging
from 0 through 180. When a decimal fraction of a degree is specified,
it shall be separated from the whole number of degrees by a decimal
point.

Latitudes north of the equator shall be specified by a plus sign (+), or
by the absence of a minus sign (-), preceding the digits designating
degrees.  Latitudes south of the Equator shall be designated by a minus
sign (-) preceding the digits designating degrees.  A point on the
Equator shall be assigned to the Northern Hemisphere.

Longitudes east of the prime meridian shall be specified by a plus sign
(+), or by the absence of a minus sign (-), preceding the digits
designating degrees.  Longitudes west of the meridian shall be
designated by minus sign (-) preceding the digits designating degrees. 
A point on the prime meridian shall be assigned to the Eastern
Hemisphere.  A point on the 180th meridian shall be assigned to the
Western Hemisphere.  One exception to this last convention is permitted. 
For the special condition of describing a band of latitude around the
earth, the East Bounding Coordinate data element shall be assigned the
value +180 (180) degrees.

Any spatial address with a latitude of +90 (90) or -90 degrees will
specify the position at the North or South Pole, respectively.  The
component for longitude may have any legal value.

With the exception of the special condition described above, this form
is specified in Department of Commerce, 1986, Representation of
geographic point locations for information interchange (Federal
Information Processing Standard 70-1):  Washington, Department of
Commerce, National Institute of Standards and Technology.  It is drawn
from RFC 2445 \cite{rfc2445}.

The \header{altitude} is expressed (RFC 1876 \cite{rfc1876}) in meters
and decimal fraction above or below the WGS84 \cite{Unit85:DoD}
reference spheroid spheroid used by GPS (semimajor axis a=6378137.0,
reciprocal flattening rf=298.257223563).  Altitude above (or below) sea
level may be used as an approximation of altitude relative to the the
[WGS 84] spheroid, though due to the Earth's surface not being a perfect
spheroid, there will be differences.  (For example, the geoid (which sea
level approximates) for the continental United States ranges from 10
meters to 50 meters below the WGS84 spheroid.  Adjustments to
\header{altitude} and/or \header{vert\_pre} will be necessary in most
cases.  The Defense Mapping Agency publishes geoid height values
relative to the [WGS 84] ellipsoid.

The parameter \header{horiz-pre} expresses the horizontal precision of
the data, in meters, measured as the diameter of the horizontal
``circle of error'', rather than a ``plus or minus'' value. 

The parameter \header{vert-pre} expresses the vertical precision of the
data, in meters, measured as for \header{horiz-pre}. \cite{rfc1876} 

The parameter \header{confidence} indicates the confidence by which the
location is known to be within the horizontal and vertical precision,
measured in percent. Valid values range from 0 to 100, inclusive.

The parameter \header{source} indicates who provided the information and
whether it was verified. If verified, this information is meaningful
only if the \header{Position} header is signed. 

\begin{flushleft}
\begin{tabular}{ll}
\header{user}          & provided by UA, not verified\\
\header{user-verified} & provided by UA, verified and passed\\
\header{user-failed}   & provided by UA, verified and failed\\
\header{proxy}         & provided by proxy server\\
\end{tabular}
\end{flushleft}

Example:
\begin{verbatim}
  Position: ;longitude=-73.98857 ;latitude=40.85790; altitude=40
    ;horiz-pre=100 ;vert-pre=20 ;source=user
\end{verbatim}

\motivation{The header name ``Location'' is already used by HTTP for a
different purpose.}
\end{changebar}
